about summary refs log tree commit diff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/application.rb2
-rw-r--r--config/brakeman.ignore50
-rw-r--r--config/environment.rb2
-rw-r--r--config/environments/development.rb5
-rw-r--r--config/environments/production.rb2
-rw-r--r--config/i18n-tasks.yml9
-rw-r--r--config/initializers/devise.rb6
-rw-r--r--config/initializers/doorkeeper.rb16
-rw-r--r--config/initializers/frontends.rb7
-rw-r--r--config/initializers/inflections.rb1
-rw-r--r--config/initializers/json_ld.rb5
-rw-r--r--config/initializers/mime_types.rb2
-rw-r--r--config/initializers/ostatus.rb3
-rw-r--r--config/initializers/paperclip.rb18
-rw-r--r--config/initializers/rack_attack.rb1
-rw-r--r--config/initializers/strong_migrations.rb3
-rw-r--r--config/initializers/twitter_regex.rb42
-rw-r--r--config/locales/activerecord.ca.yml1
-rw-r--r--config/locales/activerecord.en.yml1
-rw-r--r--config/locales/activerecord.fa.yml1
-rw-r--r--config/locales/activerecord.fr.yml1
-rw-r--r--config/locales/activerecord.he.yml1
-rw-r--r--config/locales/activerecord.id.yml1
-rw-r--r--config/locales/activerecord.it.yml1
-rw-r--r--config/locales/activerecord.ja.yml1
-rw-r--r--config/locales/activerecord.nl.yml1
-rw-r--r--config/locales/activerecord.oc.yml1
-rw-r--r--config/locales/activerecord.pl.yml1
-rw-r--r--config/locales/activerecord.ru.yml1
-rw-r--r--config/locales/activerecord.uk.yml1
-rw-r--r--config/locales/ar.yml32
-rw-r--r--config/locales/bg.yml12
-rw-r--r--config/locales/ca.yml138
-rw-r--r--config/locales/de.yml26
-rw-r--r--config/locales/devise.bg.yml14
-rw-r--r--config/locales/devise.de.yml84
-rw-r--r--config/locales/devise.eo.yml2
-rw-r--r--config/locales/devise.es.yml4
-rw-r--r--config/locales/devise.fa.yml4
-rw-r--r--config/locales/devise.fi.yml2
-rw-r--r--config/locales/devise.fr.yml4
-rw-r--r--config/locales/devise.he.yml52
-rw-r--r--config/locales/devise.hu.yml4
-rw-r--r--config/locales/devise.ja.yml12
-rw-r--r--config/locales/devise.nl.yml2
-rw-r--r--config/locales/devise.oc.yml16
-rw-r--r--config/locales/devise.pl.yml12
-rw-r--r--config/locales/devise.pt-BR.yml70
-rw-r--r--config/locales/devise.zh-TW.yml2
-rw-r--r--config/locales/doorkeeper.ar.yml2
-rw-r--r--config/locales/doorkeeper.bg.yml2
-rw-r--r--config/locales/doorkeeper.ca.yml2
-rw-r--r--config/locales/doorkeeper.de.yml6
-rw-r--r--config/locales/doorkeeper.en.yml20
-rw-r--r--config/locales/doorkeeper.eo.yml2
-rw-r--r--config/locales/doorkeeper.es.yml17
-rw-r--r--config/locales/doorkeeper.fa.yml20
-rw-r--r--config/locales/doorkeeper.fi.yml2
-rw-r--r--config/locales/doorkeeper.fr.yml31
-rw-r--r--config/locales/doorkeeper.he.yml6
-rw-r--r--config/locales/doorkeeper.hr.yml2
-rw-r--r--config/locales/doorkeeper.hu.yml4
-rw-r--r--config/locales/doorkeeper.id.yml2
-rw-r--r--config/locales/doorkeeper.io.yml2
-rw-r--r--config/locales/doorkeeper.it.yml2
-rw-r--r--config/locales/doorkeeper.ja.yml20
-rw-r--r--config/locales/doorkeeper.nl.yml53
-rw-r--r--config/locales/doorkeeper.no.yml2
-rw-r--r--config/locales/doorkeeper.oc.yml20
-rw-r--r--config/locales/doorkeeper.pl.yml28
-rw-r--r--config/locales/doorkeeper.pt-BR.yml117
-rw-r--r--config/locales/doorkeeper.pt.yml2
-rw-r--r--config/locales/doorkeeper.ru.yml2
-rw-r--r--config/locales/doorkeeper.th.yml2
-rw-r--r--config/locales/doorkeeper.uk.yml2
-rw-r--r--config/locales/doorkeeper.zh-CN.yml2
-rw-r--r--config/locales/doorkeeper.zh-HK.yml14
-rw-r--r--config/locales/doorkeeper.zh-TW.yml6
-rw-r--r--config/locales/en.yml71
-rw-r--r--config/locales/eo.yml12
-rw-r--r--config/locales/es.yml423
-rw-r--r--config/locales/fa.yml66
-rw-r--r--config/locales/fi.yml12
-rw-r--r--config/locales/fr.yml94
-rw-r--r--config/locales/he.yml12
-rw-r--r--config/locales/hr.yml12
-rw-r--r--config/locales/hu.yml11
-rw-r--r--config/locales/id.yml12
-rw-r--r--config/locales/io.yml12
-rw-r--r--config/locales/it.yml12
-rw-r--r--config/locales/ja.yml92
-rw-r--r--config/locales/ko.yml121
-rw-r--r--config/locales/nl.yml49
-rw-r--r--config/locales/no.yml12
-rw-r--r--config/locales/oc.yml202
-rw-r--r--config/locales/pl.yml127
-rw-r--r--config/locales/pt-BR.yml591
-rw-r--r--config/locales/pt.yml11
-rw-r--r--config/locales/ru.yml23
-rw-r--r--config/locales/simple_form.ar.yml4
-rw-r--r--config/locales/simple_form.bg.yml4
-rw-r--r--config/locales/simple_form.ca.yml4
-rw-r--r--config/locales/simple_form.de.yml14
-rw-r--r--config/locales/simple_form.en.yml2
-rw-r--r--config/locales/simple_form.eo.yml4
-rw-r--r--config/locales/simple_form.es.yml15
-rw-r--r--config/locales/simple_form.fa.yml14
-rw-r--r--config/locales/simple_form.fi.yml4
-rw-r--r--config/locales/simple_form.fr.yml5
-rw-r--r--config/locales/simple_form.he.yml36
-rw-r--r--config/locales/simple_form.hr.yml4
-rw-r--r--config/locales/simple_form.hu.yml4
-rw-r--r--config/locales/simple_form.id.yml4
-rw-r--r--config/locales/simple_form.ja.yml6
-rw-r--r--config/locales/simple_form.ko.yml4
-rw-r--r--config/locales/simple_form.nl.yml24
-rw-r--r--config/locales/simple_form.no.yml15
-rw-r--r--config/locales/simple_form.oc.yml3
-rw-r--r--config/locales/simple_form.pl.yml27
-rw-r--r--config/locales/simple_form.pt-BR.yml79
-rw-r--r--config/locales/simple_form.pt.yml4
-rw-r--r--config/locales/simple_form.th.yml12
-rw-r--r--config/locales/simple_form.tr.yml10
-rw-r--r--config/locales/simple_form.uk.yml4
-rw-r--r--config/locales/simple_form.zh-CN.yml4
-rw-r--r--config/locales/simple_form.zh-TW.yml4
-rw-r--r--config/locales/th.yml12
-rw-r--r--config/locales/tr.yml12
-rw-r--r--config/locales/uk.yml12
-rw-r--r--config/locales/zh-CN.yml42
-rw-r--r--config/locales/zh-HK.yml16
-rw-r--r--config/locales/zh-TW.yml16
-rw-r--r--config/navigation.rb5
-rw-r--r--config/routes.rb43
-rw-r--r--config/settings.yml2
-rw-r--r--config/sidekiq.yml16
-rw-r--r--config/webpack/configuration.js17
-rw-r--r--config/webpack/loaders/babel.js5
-rw-r--r--config/webpack/loaders/sass.js2
-rw-r--r--config/webpack/shared.js38
-rw-r--r--config/webpacker.yml22
141 files changed, 2639 insertions, 983 deletions
diff --git a/config/application.rb b/config/application.rb
index ed5fdb7f7..eb89f0a10 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -86,7 +86,7 @@ module Mastodon
     config.middleware.use Rack::Deflater
 
     config.to_prepare do
-      Doorkeeper::AuthorizationsController.layout 'public'
+      Doorkeeper::AuthorizationsController.layout 'modal'
       Doorkeeper::AuthorizedApplicationsController.layout 'admin'
       Doorkeeper::Application.send :include, ApplicationExtension
     end
diff --git a/config/brakeman.ignore b/config/brakeman.ignore
index f9bc77069..dbb59dd07 100644
--- a/config/brakeman.ignore
+++ b/config/brakeman.ignore
@@ -3,14 +3,33 @@
     {
       "warning_type": "Dynamic Render Path",
       "warning_code": 15,
+      "fingerprint": "44d3f14e05d8fbb5b23e13ac02f15aa38b2a2f0f03b9ba76bab7f98e155a4a4e",
+      "check_name": "Render",
+      "message": "Render path contains parameter value",
+      "file": "app/views/stream_entries/embed.html.haml",
+      "line": 3,
+      "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
+      "code": "render(action => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :centered => true })",
+      "render_path": [{"type":"controller","class":"StatusesController","method":"embed","line":35,"file":"app/controllers/statuses_controller.rb"}],
+      "location": {
+        "type": "template",
+        "template": "stream_entries/embed"
+      },
+      "user_input": "params[:id]",
+      "confidence": "Weak",
+      "note": ""
+    },
+    {
+      "warning_type": "Dynamic Render Path",
+      "warning_code": 15,
       "fingerprint": "9f31d941f3910dba2e9bfcd81aef4513249bd24c02d0f98e13ad44fdeeccd0e8",
       "check_name": "Render",
       "message": "Render path contains parameter value",
       "file": "app/views/admin/accounts/index.html.haml",
-      "line": 32,
+      "line": 63,
       "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
       "code": "render(action => filtered_accounts.page(params[:page]), {})",
-      "render_path": [{"type":"controller","class":"Admin::AccountsController","method":"index","line":7,"file":"app/controllers/admin/accounts_controller.rb"}],
+      "render_path": [{"type":"controller","class":"Admin::AccountsController","method":"index","line":10,"file":"app/controllers/admin/accounts_controller.rb"}],
       "location": {
         "type": "template",
         "template": "admin/accounts/index"
@@ -42,25 +61,6 @@
     {
       "warning_type": "Dynamic Render Path",
       "warning_code": 15,
-      "fingerprint": "c417f9d44ab05dd9cf3d5ec9df2324a5036774c151181787b32c4c940623191b",
-      "check_name": "Render",
-      "message": "Render path contains parameter value",
-      "file": "app/views/stream_entries/embed.html.haml",
-      "line": 2,
-      "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
-      "code": "render(action => Account.find_local!(params[:account_username]).stream_entries.where(:activity_type => \"Status\").find(params[:id]).activity_type.downcase, { Account.find_local!(params[:account_username]).stream_entries.where(:activity_type => \"Status\").find(params[:id]).activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).stream_entries.where(:activity_type => \"Status\").find(params[:id]).activity, :centered => true })",
-      "render_path": [{"type":"controller","class":"StreamEntriesController","method":"embed","line":32,"file":"app/controllers/stream_entries_controller.rb"}],
-      "location": {
-        "type": "template",
-        "template": "stream_entries/embed"
-      },
-      "user_input": "params[:id]",
-      "confidence": "Weak",
-      "note": ""
-    },
-    {
-      "warning_type": "Dynamic Render Path",
-      "warning_code": 15,
       "fingerprint": "c5d6945d63264af106d49367228d206aa2f176699ecdce2b98fac101bc6a96cf",
       "check_name": "Render",
       "message": "Render path contains parameter value",
@@ -84,10 +84,10 @@
       "check_name": "Render",
       "message": "Render path contains parameter value",
       "file": "app/views/stream_entries/show.html.haml",
-      "line": 19,
+      "line": 23,
       "link": "http://brakemanscanner.org/docs/warning_types/dynamic_render_path/",
       "code": "render(partial => \"stream_entries/#{Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase}\", { :locals => ({ Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity_type.downcase.to_sym => Account.find_local!(params[:account_username]).statuses.find(params[:id]).stream_entry.activity, :include_threads => true }) })",
-      "render_path": [{"type":"controller","class":"StatusesController","method":"show","line":15,"file":"app/controllers/statuses_controller.rb"}],
+      "render_path": [{"type":"controller","class":"StatusesController","method":"show","line":20,"file":"app/controllers/statuses_controller.rb"}],
       "location": {
         "type": "template",
         "template": "stream_entries/show"
@@ -97,6 +97,6 @@
       "note": ""
     }
   ],
-  "updated": "2017-05-07 08:26:06 +0900",
-  "brakeman_version": "3.6.1"
+  "updated": "2017-08-30 05:14:04 +0200",
+  "brakeman_version": "3.7.2"
 }
diff --git a/config/environment.rb b/config/environment.rb
index 426333bb4..caae5f1a0 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -3,3 +3,5 @@ require_relative 'application'
 
 # Initialize the Rails application.
 Rails.application.initialize!
+
+ActiveRecord::SchemaDumper.ignore_tables = ['deprecated_preview_cards']
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 4c60965c8..59bc2c3e2 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -16,9 +16,10 @@ Rails.application.configure do
   if Rails.root.join('tmp/caching-dev.txt').exist?
     config.action_controller.perform_caching = true
 
-    config.cache_store = :memory_store
+    config.cache_store = :redis_store, ENV['REDIS_URL'], REDIS_CACHE_PARAMS
+
     config.public_file_server.headers = {
-      'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}"
+      'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}",
     }
   else
     config.action_controller.perform_caching = false
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 928fd13e5..dc1ce5ed6 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -73,7 +73,7 @@ Rails.application.configure do
   config.action_mailer.perform_caching = false
 
   # E-mails
-  config.action_mailer.default_options = { from: ENV.fetch('SMTP_FROM_ADDRESS') }
+  config.action_mailer.default_options = { from: ENV.fetch('SMTP_FROM_ADDRESS', 'notifications@localhost') }
 
   config.action_mailer.smtp_settings = {
     :port                 => ENV['SMTP_PORT'],
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index f2bb220a6..b35e5c09a 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -36,19 +36,22 @@ ignore_missing:
   - 'activerecord.attributes.*'
   - 'activerecord.errors.*'
   - '{devise,pagination,doorkeeper}.*'
-  - '{date,datetime,time}.*'
+  - '{date,datetime,time,number}.*'
   - 'simple_form.{yes,no}'
   - 'simple_form.{placeholders,hints,labels}.*'
   - 'simple_form.{error_notification,required}.:'
   - 'errors.messages.*'
   - 'activerecord.errors.models.doorkeeper/*'
-
+  - 'sessions.{browsers,platforms}.*'
+  - 'terms.body_html'
+  - 'application_mailer.salutation'
+  - 'errors.500'
 ignore_unused:
   - 'activemodel.errors.*'
   - 'activerecord.attributes.*'
   - 'activerecord.errors.*'
   - '{devise,pagination,doorkeeper}.*'
-  - '{date,datetime,time}.*'
+  - '{date,datetime,time,number}.*'
   - 'simple_form.{yes,no}'
   - 'simple_form.{placeholders,hints,labels}.*'
   - 'simple_form.{error_notification,required}.:'
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index e6b0e90cb..64c4e12ff 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -154,7 +154,7 @@ Devise.setup do |config|
   # their account can't be confirmed with the token any more.
   # Default is nil, meaning there is no restriction on how long a user can take
   # before confirming their account.
-  # config.confirm_within = 3.days
+  config.confirm_within = 2.days
 
   # If true, requires any email changes to be confirmed (exactly the same way as
   # initial account confirmation) to be applied. Requires additional unconfirmed_email
@@ -167,7 +167,7 @@ Devise.setup do |config|
 
   # ==> Configuration for :rememberable
   # The time the user will be remembered without asking for credentials again.
-  # config.remember_for = 2.weeks
+  config.remember_for = 1.year
 
   # Invalidates all the remember me tokens when the user signs out.
   config.expire_all_remember_me_on_sign_out = true
@@ -177,7 +177,7 @@ Devise.setup do |config|
 
   # Options to be passed to the created cookie. For instance, you can set
   # secure: true in order to force SSL only cookies.
-  # config.rememberable_options = {}
+  config.rememberable_options = { secure: true }
 
   # ==> Configuration for :validatable
   # Range for password length.
diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb
index b618bf344..074f8c410 100644
--- a/config/initializers/doorkeeper.rb
+++ b/config/initializers/doorkeeper.rb
@@ -7,15 +7,14 @@ Doorkeeper.configure do
     current_user || redirect_to(new_user_session_url)
   end
 
-  resource_owner_from_credentials do |routes|
-    request.params[:user] = { email: request.params[:username], password: request.params[:password] }
-    request.env["devise.allow_params_authentication"] = true
-    request.env["warden"].authenticate!(scope: :user)
+  resource_owner_from_credentials do |_routes|
+    user = User.find_by(email: request.params[:username])
+    user if !user&.otp_required_for_login? && user&.valid_password?(request.params[:password])
   end
 
   # If you want to restrict access to the web interface for adding oauth authorized applications, you need to declare the block below.
   admin_authenticator do
-    (current_user && current_user.admin?) || redirect_to(new_user_session_url)
+    current_user&.admin? || redirect_to(new_user_session_url)
   end
 
   # Authorization Code expiration time (default 10 minutes).
@@ -34,6 +33,11 @@ Doorkeeper.configure do
   # https://github.com/doorkeeper-gem/doorkeeper#custom-access-token-generator
   # access_token_generator "::Doorkeeper::JWT"
 
+  # The controller Doorkeeper::ApplicationController inherits from.
+  # Defaults to ActionController::Base.
+  # https://github.com/doorkeeper-gem/doorkeeper#custom-base-controller
+  base_controller 'ApplicationController'
+
   # Reuse access token for the same resource owner within an application (disabled by default)
   # Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/383
   reuse_access_token
@@ -45,7 +49,7 @@ Doorkeeper.configure do
   # Optional parameter :confirmation => true (default false) if you want to enforce ownership of
   # a registered application
   # Note: you must also run the rails g doorkeeper:application_owner generator to provide the necessary support
-  # enable_application_owner :confirmation => true
+  enable_application_owner
 
   # Define access token scopes for your provider
   # For more information go to
diff --git a/config/initializers/frontends.rb b/config/initializers/frontends.rb
deleted file mode 100644
index 2cb68cc61..000000000
--- a/config/initializers/frontends.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-Rails.application.configure do
-  frontends = []
-  Rails.root.join('app', 'javascript', 'packs', 'frontends').each_child(false) { |f| frontends.push f.to_s }
-  config.x.available_frontends = frontends
-end
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index 44e54c9f3..bf0cb52a3 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -17,4 +17,5 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
   inflect.acronym 'ActivityPub'
   inflect.acronym 'PubSubHubbub'
   inflect.acronym 'ActivityStreams'
+  inflect.acronym 'JsonLd'
 end
diff --git a/config/initializers/json_ld.rb b/config/initializers/json_ld.rb
new file mode 100644
index 000000000..2ddc7352d
--- /dev/null
+++ b/config/initializers/json_ld.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+require_relative '../../lib/json_ld/identity'
+require_relative '../../lib/json_ld/security'
+require_relative '../../lib/json_ld/activitystreams'
diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb
index 30e91ad63..58a6c0063 100644
--- a/config/initializers/mime_types.rb
+++ b/config/initializers/mime_types.rb
@@ -1,4 +1,4 @@
 # Be sure to restart your server when you modify this file.
 
-Mime::Type.register 'application/json', :json, %w(text/x-json application/jsonrequest application/jrd+json application/activity+json)
+Mime::Type.register 'application/json', :json, %w(text/x-json application/jsonrequest application/jrd+json application/activity+json application/ld+json)
 Mime::Type.register 'text/xml',         :xml,  %w(application/xml application/atom+xml application/xrd+xml)
diff --git a/config/initializers/ostatus.rb b/config/initializers/ostatus.rb
index 342996dcd..ba96fda22 100644
--- a/config/initializers/ostatus.rb
+++ b/config/initializers/ostatus.rb
@@ -5,13 +5,14 @@ host     = ENV.fetch('LOCAL_DOMAIN') { "localhost:#{port}" }
 web_host = ENV.fetch('WEB_DOMAIN') { host }
 https    = ENV['LOCAL_HTTPS'] == 'true'
 
-alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { "" }
+alternate_domains = ENV.fetch('ALTERNATE_DOMAINS') { '' }
 
 Rails.application.configure do
   config.x.local_domain = host
   config.x.web_domain   = web_host
   config.x.use_https    = https
   config.x.use_s3       = ENV['S3_ENABLED'] == 'true'
+  config.x.use_swift    = ENV['SWIFT_ENABLED'] == 'true'
 
   config.x.alternate_domains = alternate_domains.split(/\s*,\s*/)
 
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index 740c1a953..f27aae7ec 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -40,6 +40,24 @@ if ENV['S3_ENABLED'] == 'true'
     Paperclip::Attachment.default_options[:url]           = ':s3_alias_url'
     Paperclip::Attachment.default_options[:s3_host_alias] = ENV['S3_CLOUDFRONT_HOST']
   end
+elsif ENV['SWIFT_ENABLED'] == 'true'
+  Paperclip::Attachment.default_options.merge!(
+    path: ':class/:attachment/:id_partition/:style/:filename',
+    storage: :fog,
+    fog_credentials: {
+      provider: 'OpenStack',
+      openstack_username: ENV.fetch('SWIFT_USERNAME'),
+      openstack_project_name: ENV.fetch('SWIFT_TENANT'),
+      openstack_api_key: ENV.fetch('SWIFT_PASSWORD'),
+      openstack_auth_url: ENV.fetch('SWIFT_AUTH_URL'),
+      openstack_domain_name: ENV['SWIFT_DOMAIN_NAME'] || 'default',
+      openstack_region: ENV['SWIFT_REGION'],
+      openstack_cache_ttl: ENV['SWIFT_CACHE_TTL'] || 60,
+    },
+    fog_directory: ENV.fetch('SWIFT_CONTAINER'),
+    fog_host: ENV.fetch('SWIFT_OBJECT_URL'),
+    fog_public: true
+  )
 else
   Paperclip::Attachment.default_options[:path] = (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename'
   Paperclip::Attachment.default_options[:url]  = (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename'
diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb
index d5cd77b34..53cb106ca 100644
--- a/config/initializers/rack_attack.rb
+++ b/config/initializers/rack_attack.rb
@@ -33,6 +33,7 @@ class Rack::Attack
     match_data = env['rack.attack.match_data']
 
     headers = {
+      'Content-Type'          => 'application/json',
       'X-RateLimit-Limit'     => match_data[:limit].to_s,
       'X-RateLimit-Remaining' => '0',
       'X-RateLimit-Reset'     => (now + (match_data[:period] - now.to_i % match_data[:period])).iso8601(6),
diff --git a/config/initializers/strong_migrations.rb b/config/initializers/strong_migrations.rb
new file mode 100644
index 000000000..3d7beac9f
--- /dev/null
+++ b/config/initializers/strong_migrations.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+StrongMigrations.start_after = 20170924022025 if Rails.env.development?
diff --git a/config/initializers/twitter_regex.rb b/config/initializers/twitter_regex.rb
new file mode 100644
index 000000000..e924fac22
--- /dev/null
+++ b/config/initializers/twitter_regex.rb
@@ -0,0 +1,42 @@
+module Twitter
+  class Regex
+
+    REGEXEN[:valid_general_url_path_chars] = /[^\p{White_Space}\(\)\?]/iou
+    REGEXEN[:valid_url_path_ending_chars] = /[^\p{White_Space}\(\)\?!\*';:=\,\.\$%\[\]\p{Pd}~&\|@]|(?:#{REGEXEN[:valid_url_balanced_parens]})/iou
+    REGEXEN[:valid_url_balanced_parens] = /
+      \(
+        (?:
+          #{REGEXEN[:valid_general_url_path_chars]}+
+          |
+          # allow one nested level of balanced parentheses
+          (?:
+            #{REGEXEN[:valid_general_url_path_chars]}*
+            \(
+              #{REGEXEN[:valid_general_url_path_chars]}+
+            \)
+            #{REGEXEN[:valid_general_url_path_chars]}*
+          )
+        )
+      \)
+    /iox
+    REGEXEN[:valid_url_path] = /(?:
+      (?:
+        #{REGEXEN[:valid_general_url_path_chars]}*
+        (?:#{REGEXEN[:valid_url_balanced_parens]} #{REGEXEN[:valid_general_url_path_chars]}*)*
+        #{REGEXEN[:valid_url_path_ending_chars]}
+      )|(?:#{REGEXEN[:valid_general_url_path_chars]}+\/)
+    )/iox
+    REGEXEN[:valid_url] = %r{
+      (                                                                                     #   $1 total match
+        (#{REGEXEN[:valid_url_preceding_chars]})                                            #   $2 Preceeding chracter
+        (                                                                                   #   $3 URL
+          (https?:\/\/)?                                                                    #   $4 Protocol (optional)
+          (#{REGEXEN[:valid_domain]})                                                       #   $5 Domain(s)
+          (?::(#{REGEXEN[:valid_port_number]}))?                                            #   $6 Port number (optional)
+          (/#{REGEXEN[:valid_url_path]}*)?                                                  #   $7 URL Path and anchor
+          (\?#{REGEXEN[:valid_url_query_chars]}*#{REGEXEN[:valid_url_query_ending_chars]})? #   $8 Query String
+        )
+      )
+    }iox
+  end
+end
diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml
index d4d3d1e40..12e347ad9 100644
--- a/config/locales/activerecord.ca.yml
+++ b/config/locales/activerecord.ca.yml
@@ -1,3 +1,4 @@
+---
 ca:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml
index c3354fa25..428aaf727 100644
--- a/config/locales/activerecord.en.yml
+++ b/config/locales/activerecord.en.yml
@@ -1,3 +1,4 @@
+---
 en:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml
index eaff8f077..1cd50eec7 100644
--- a/config/locales/activerecord.fa.yml
+++ b/config/locales/activerecord.fa.yml
@@ -1,3 +1,4 @@
+---
 fa:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml
index 858777c0e..c4b04c73a 100644
--- a/config/locales/activerecord.fr.yml
+++ b/config/locales/activerecord.fr.yml
@@ -1,3 +1,4 @@
+---
 fr:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml
index e4b16d289..e3b363efc 100644
--- a/config/locales/activerecord.he.yml
+++ b/config/locales/activerecord.he.yml
@@ -1,3 +1,4 @@
+---
 he:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.id.yml b/config/locales/activerecord.id.yml
index fd606cd3a..9fa093e9d 100644
--- a/config/locales/activerecord.id.yml
+++ b/config/locales/activerecord.id.yml
@@ -1,3 +1,4 @@
+---
 id:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml
index be2f0b4c1..4cec9fb63 100644
--- a/config/locales/activerecord.it.yml
+++ b/config/locales/activerecord.it.yml
@@ -1,3 +1,4 @@
+---
 it:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml
index 975912f0f..7bc4fc308 100644
--- a/config/locales/activerecord.ja.yml
+++ b/config/locales/activerecord.ja.yml
@@ -1,3 +1,4 @@
+---
 ja:
   activerecord:
     attributes:
diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml
index b39c8cd78..eeabab34a 100644
--- a/config/locales/activerecord.nl.yml
+++ b/config/locales/activerecord.nl.yml
@@ -1,3 +1,4 @@
+---
 nl:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.oc.yml b/config/locales/activerecord.oc.yml
index a26018f43..e52f79188 100644
--- a/config/locales/activerecord.oc.yml
+++ b/config/locales/activerecord.oc.yml
@@ -1,3 +1,4 @@
+---
 oc:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml
index f82e1b875..bd8e40a6a 100644
--- a/config/locales/activerecord.pl.yml
+++ b/config/locales/activerecord.pl.yml
@@ -1,3 +1,4 @@
+---
 pl:
   activerecord:
     attributes:
diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml
index 316637888..1a7ac9978 100644
--- a/config/locales/activerecord.ru.yml
+++ b/config/locales/activerecord.ru.yml
@@ -1,3 +1,4 @@
+---
 ru:
   activerecord:
     errors:
diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml
index 24febc1bc..00b2b8d8b 100644
--- a/config/locales/activerecord.uk.yml
+++ b/config/locales/activerecord.uk.yml
@@ -1,3 +1,4 @@
+---
 uk:
   activerecord:
     errors:
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index ec051591a..666b8cb97 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -43,21 +43,20 @@ ar:
   authorize_follow:
     error: Unfortunately, there was an error looking up the remote account
     follow: إتبع
-    prompt_html: 'You (<strong>%{self}</strong>) have requested to follow:'
     title: إتباع %{acct}
   datetime:
     distance_in_words:
       about_x_hours: "%{count}سا"
-      about_x_months: "%{count}شهر"
-      about_x_years: "%{count}سنة"
-      almost_x_years: "%{count}سنوات"
-      half_a_minute: Just now
-      less_than_x_minutes: "%{count}د"
+      about_x_months: "%{count} شهر"
+      about_x_years: "%{count} سنة"
+      almost_x_years: "%{count} سنوات"
+      half_a_minute: الآن
+      less_than_x_minutes: "%{count} د"
       less_than_x_seconds: الآن
-      over_x_years: "%{count}سنين"
-      x_days: "%{count}أيام"
+      over_x_years: "%{count} سنين"
+      x_days: "%{count} أيام"
       x_minutes: "%{count}د"
-      x_months: "%{count}شه"
+      x_months: "%{count} شه"
       x_seconds: "%{count}ث"
   exports:
     blocks: قمت بحظر
@@ -95,7 +94,7 @@ ar:
         one: "إشعار واحد منذ زيارتك الأخيرة \U0001F418"
         other: "%{count} إشعارات جديدة منذ زيارتك الأخيرة \U0001F418"
     favourite:
-      body: 'Your status was favourited by %{name}:'
+      body: أُعجب %{name} بمنشورك
       subject: "%{name} favourited your status"
     follow:
       body: "%{name} من متتبعيك الآن !"
@@ -109,6 +108,17 @@ ar:
     reblog:
       body: 'Your status was boosted by %{name}:'
       subject: "%{name} boosted your status"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: التالي
     prev: السابق
@@ -149,7 +159,7 @@ ar:
     enabled_success: تم تفعيل إثبات الهوية المزدوج بنجاح
     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."
     manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
-    setup: Set up
+    setup: تنشيط
     wrong_code: الرمز الذي أدخلته غير صالح. تحقق من صحة الوقت على الخادم و الجهاز.
   users:
     invalid_email: عنوان البريد الإلكتروني غير صالح
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 65ff5c025..13d0394a3 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -43,7 +43,6 @@ bg:
   authorize_follow:
     error: Възникна грешка в откриването на потребителя
     follow: Последвай
-    prompt_html: "(<strong>%{self}</strong>), молбата ти беше изпратена до:"
     title: Последвай %{acct}
   datetime:
     distance_in_words:
@@ -109,6 +108,17 @@ 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/ca.yml b/config/locales/ca.yml
index 725b120ec..6a92b7f1b 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -5,15 +5,34 @@ ca:
     about_this: Sobre aquesta instància
     closed_registrations: Els registres estan actualment tancats en aquesta instància.
     contact: Contacte
+    contact_missing: No configurat
+    contact_unavailable: N/A
     description_headline: Què es %{domain}?
     domain_count_after: altres instàncies
     domain_count_before: Connectat a
+    extended_description_html: |
+      <h3>Un bon lloc per les regles</h3>
+      <p>Encara no s'ha configurat la descripció ampliada.</p>
+    features:
+      humane_approach_body: Aprenent dels errors d'altres xarxes, Mastodon té com a objectiu fer ètiques eleccions de disseny per combatre el mal ús de les xarxes socials.
+      humane_approach_title: Un enfocament més humà
+      not_a_product_body: Mastodon no és una xarxa comercial. Sense publicitat, sense mineria de dades, sense jardins amurallats. No hi ha autoritat central.
+      not_a_product_title: Ets una persona, no un producte
+      real_conversation_body: Amb 500 caràcters a la teva disposició i suport per a continguts granulars i avisos multimèdia, pots expressar-te de la manera que vulguis.
+      real_conversation_title: Construït per a converses reals
+      within_reach_body: Diverses aplicacions per a iOS, Android i altres plataformes gràcies a un ecosistema API amable amb el desenvolupador, et permet mantenir-te al dia amb els teus amics en qualsevol lloc..
+      within_reach_title: Sempre a l'abast
+    find_another_instance: Troba altres instàncies
+    generic_description: "%{domain} és un servidor a la xarxa"
+    hosted_on: Mastodon allotjat a %{domain}
+    learn_more: Aprèn més
     other_instances: Altres instàncies
     source_code: Codi font
     status_count_after: estats
     status_count_before: Que han escrit
     user_count_after: usuaris registrats
     user_count_before: Tenim
+    what_is_mastodon: Què és Mastodon?
   accounts:
     follow: Seguir
     followers: Seguidors
@@ -90,12 +109,14 @@ ca:
         hint: El bloqueig de domini no impedirà la creació de nous comptes en la base de dades, però s´aplicaran mètodes de moderació específics sobre aquests comptes
         severity:
           desc_html: "<strong>Silenci</strong> farà les publicacions del compte invisibles a tothom que no l'estigui seguint. Suspendre eliminarà tots els continguts, multimèdia i les dades del perfil del compte."
+          noop: Cap
           silence: Silenci
           suspend: Suspendre
         title: Nou bloqueig de domini
       reject_media: Rebutjar arxius multimèdia
       reject_media_hint: Elimina arxius multimèdia emmagatzamats localment i impideix descarregar cap en el futur. Irrellevant per suspensions
       severities:
+        noop: Cap
         silence: Silenci
         suspend: Suspendre
       severity: Severitat
@@ -146,16 +167,41 @@ ca:
         closed_message:
           desc_html: Apareix en la primera pàgina quan es tanquen els registres<br>Pot utilitzar etiquetes HTML
           title: Missatge de registre tancat
+        deletion:
+          desc_html: Permet a qualsevol esborrar el seu compte
+          title: Obrir la supressió del compte
         open:
+          desc_html: Permet que qualsevol pugui crear un compte
           title: Registre obert
       site_description:
         desc_html: Es mostra com un paràgraf a la pàgina principal i s'utilitza com una etiqueta meta.<br>Pots utilitzar etiquetes HTML, en particular <code>&lt;a&gt;</code> i <code>&lt;em&gt;</code>.
         title: Descripció del lloc
       site_description_extended:
-        desc_html: Apareix a la pàgina d'informació estesa<br>Pot utilitzar etiquetes HTML
+        desc_html: Un bon lloc per al vostre codi de conducta, regles, directrius i altres coses que distingeixen la vostra instància. Podeu utilitzar etiquetes HTML
         title: Descripció estesa del lloc
+      site_terms:
+        desc_html: Pots escriure la teva pròpia política de privadesa, els termes del servei o d'altres normes legals. Pots utilitzar etiquetes HTML
+        title: Termes del servei personalitzats
       site_title: Títol del lloc
+      timeline_preview:
+        desc_html: Mostra la línia de temps pública a la pàgina inicial
+        title: Vista prèvia de la línia de temps
       title: Configuració del lloc
+    statuses:
+      back_to_account: Torna a la pàgina del compte
+      batch:
+        delete: Esborra
+        nsfw_off: NSFW OFF
+        nsfw_on: NSFW ON
+      execute: Executa
+      failed_to_execute: No s'ha pogut executar
+      media:
+        hide: Amaga multimèdia
+        show: Mostra multimèdia
+        title: Multimèdia
+      no_media: Sense multimèdia
+      title: Estats del compte
+      with_media: Amb multimèdia
     subscriptions:
       callback_url: Callback URL
       confirmed: Confirmat
@@ -164,18 +210,25 @@ ca:
       title: WebSub
       topic: Tòpic
     title: Administració
+  admin_mailer:
+    new_report:
+      body: "%{reporter} ha informat de %{target}"
+      subject: Nou informe per a %{instance} (#%{id})
   application_mailer:
+    salutation: "%{name},"
     settings: 'Canviar preferències de correu: %{link}'
     signature: Notificacions de Mastodon desde %{instance}
     view: 'Vista:'
   applications:
     invalid_url: La URL proporcionada es incorrecte
   auth:
+    agreement_html: En inscriure't, acceptes <a href="%{rules_path}">les nostres termes del servei</a> i <a href="%{terms_path}">la nostra política de privadesa</a>.
     change_password: Canviar contrasenya
     delete_account: Esborrar el compte
     delete_account_html: Si vols esborrar el teu compte pots <a href="%{path}">fer-ho aquí</a>. S'et demanarà confirmació.
     didnt_get_confirmation: No vas rebre el correu de confirmació?
     forgot_password: Has oblidat la contrasenya?
+    invalid_reset_password_token: L'enllaç de restabliment de la contrasenya no és vàlid o caducat. Siusplau torna-ho a provar..
     login: Iniciar sessió
     logout: Tancar sessió
     register: Enregistrarse
@@ -185,7 +238,12 @@ ca:
   authorize_follow:
     error: Malauradament, ha ocorregut un error buscant el compte remot
     follow: Seguir
-    prompt_html: 'Tú (<strong>%{self}</strong>) has solicitat seguir:'
+    follow_request: 'Heu enviat una sol·licitud de seguiment a:'
+    following: 'Èxit! Ara segueixes:'
+    post_follow:
+      close: O bé, pots tancar aquesta finestra.
+      return: Torna al perfil de l'usuari
+      web: Anar a la web
     title: Seguir %{acct}
   datetime:
     distance_in_words:
@@ -217,7 +275,7 @@ ca:
       content: La verificació de seguretat ha fallat. Bloquejes les galetes?
       title: La verificació de seguretat ha fallat
     '429': Estrangulat
-    noscript: Per utilitzar Mastodon si us plau activa JavaScript.
+    noscript_html: Per utilitzar Mastodon si us plau activa JavaScript.
   exports:
     blocks: Persones que has bloquejat
     csv: CSV
@@ -255,7 +313,7 @@ ca:
   landing_strip_signup_html: Si no en tens, pots <a href="%{sign_up_path}">registrar-te aquí</a>.
   media_attachments:
     validations:
-      images_and_video: No es pot adjuntar un vídeo a un estat que ja contingui imatges
+      images_and_video: No es pot adjuntar un vídeo a una publicació que ja contingui imatges
       too_many: No es poden adjuntar més de 4 arxius
   notification_mailer:
     digest:
@@ -282,15 +340,79 @@ ca:
     reblog:
       body: "%{name} ha retootejat el teu estat"
       subject: "%{name} ha retootejat el teu estat"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Pròxim
     prev: Anterior
     truncate: "&hellip;"
+  push_notifications:
+    favourite:
+      title: "%{name} favourited your status"
+    follow:
+      title: "%{name} is now following you"
+    group:
+      title: "%{count} notifications"
+    mention:
+      action_boost: Boost
+      action_expand: Mostra més
+      action_favourite: Favorit
+      title: "%{name} t'ha mencionat"
+    reblog:
+      title: "%{name} t'ha retootejat"
   remote_follow:
     acct: Escriu el usuari@domini de la persona que vols seguir
     missing_resource: No s'ha pogut trobar la URL de redirecció necessaria per el compte.
     proceed: Procedir a seguir
     prompt: 'Seguiràs a:'
+  sessions:
+    activity: Última activitat
+    browser: Navegador
+    browsers:
+      alipay: Alipay
+      blackberry: Blackberry
+      chrome: Chrome
+      edge: Microsoft Edge
+      firefox: Firefox
+      generic: Navegador desconegut
+      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: Sessió actual
+    description: "%{browser} de %{platform}"
+    explanation: Aquests són els navegadors web que actualment han iniciat la sessió al teu compte 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: plataforma desconeguda
+      windows: Windows
+      windows_mobile: Windows Mobile
+      windows_phone: Windows Phone
+    revoke: Revoca
+    revoke_success: S'ha revocat la sessió amb èxit
+    title: Sessions
   settings:
     authorized_apps: Aplicacions autoritzades
     back: Tornar al inici
@@ -317,19 +439,24 @@ ca:
     click_to_show: Clic per mostrar
     reblogged: retooteado
     sensitive_content: Contingut sensible
+  terms:
+    body_html: "<h2>Política de privacitat</h2>\n\n<h3 id=\"collect\">Quina informació recollim?</h3>\n\n<p>Recopilem informació teva quan et registres en aquesta instància i recopilem dades quan participes en el fòrum llegint, escrivint i avaluant el contingut aquí compartit.</p>\n\n<p>En registrar-te en aquesta instància, se't pot demanar que introduexisu el teu nom i l'adreça de correu electrònic. També pots visitar el nostre lloc sense registrar-te. La teva adreça de correu electrònic es verificarà mitjançant un correu electrònic que conté un enllaç únic. Si es visita aquest enllaç, sabem que controles l'adreça de correu electrònic.</p>\n\n<p>Quan es registra i publica, registrem l'adreça IP de la qual es va originar la publicació. També podrem conservar els registres del servidor que inclouen l'adreça IP de cada sol·licitud al nostre servidor.</p>\n\n<h3 id=\"use\">Per a què utilitzem la teva informació?</h3>\n\n<p>Qualsevol de la informació que recopilem de tu pot utilitzar-se d'una de les maneres següents:</p>\n\n<ul>\n  <li>Per a personalitzar la teva experiència &mdash; la teva informació ens ajuda a respondre millor a les teves necessitats individuals.</li>\n  <li>Per millorar el nostre lloc &mdash; ens esforcem contínuament per millorar les nostres ofertes de llocs basats en la informació i els comentaris que rebem de tu.</li>\n  <li>Per millorar el servei al client &mdash; la teva informació ens ajuda a respondre més eficaçment a les teves sol·licituds de servei al client i a les necessitats de suport.</li>\n  <li>Per enviar correus electrònics periòdics &mdash; l'adreça electrònica que proporcionis es pot utilitzar per enviar-te informació, notificacions que sol·licitis sobre canvis en temes o en resposta al teu nom d'usuari, respondre a les consultes i/o altres sol·licituds o preguntes.</li>\n</ul>\n\n<h3 id=\"protect\">Com protegim la teva informació?</h3>\n\n<p>Implementem diverses mesures de seguretat per mantenir la seguretat de la teva informació personal quan introdueixes, envies o accedeixes a la teva informació personal.</p>\n\n<h3 id=\"data-retention\">Quina és la nostre política de retenció de dades?</h3>\n\n<p>Farem un esforç de bona fe per a:</p>\n\n<ul>\n  <li>Conserva els registres de servidor que continguin l'adreça IP de totes les sol·licituds a aquest servidor no més de 90 dies.</li>\n  <li>Conserva les adreces IP associades als usuaris registrats i les seves publicacions no més de 5 anys.</li>\n</ul>\n\n<h3 id=\"cookies\">Utilitzem galetes?</h3>\n\n<p>Sí. Les cookies són fitxers petits que un lloc o el proveïdor de serveis transfereix al disc dur del vostre ordinador a través del navegador web (si ho permet). Aquestes galetes permeten al lloc reconèixer el vostre navegador i, si teniu un compte registrat, associar-lo al vostre compte registrat.</p>\n\n<p>Utilitzem cookies per comprendre i desar les vostres preferències per a futures visites i compilar dades agregades sobre el trànsit del lloc i la interacció del lloc, de manera que podrem oferir millors experiències i eines del lloc en el futur. Podem contractar amb proveïdors de serveis de tercers per ajudar-nos a comprendre millor els visitants del nostre lloc. Aquests proveïdors de serveis no estan autoritzats a utilitzar la informació recollida en nom nostre, excepte per ajudar-nos a dur a terme i millorar el nostre negoci.</p>\n\n<h3 id=\"disclose\">Publiquem informació al exterior?</h3>\n\n<p>No venem, comercialitzem ni transmetem a tercers la vostra informació d'identificació personal. Això no inclou tercers de confiança que ens ajudin a operar el nostre lloc, a dur a terme el nostre negoci o a fer-ho, sempre que aquestes parts acceptin mantenir confidencial aquesta informació. També podem publicar la vostra informació quan creiem que l'alliberament és apropiat per complir amb la llei, fer complir les polítiques del nostre lloc o protegir els nostres drets o altres drets, propietat o seguretat. No obstant això, la informació de visitant que no sigui personalment identificable es pot proporcionar a altres parts per a la comercialització, la publicitat o altres usos.</p>  \n\n<h3 id=\"third-party\">Vincles de tercers</h3>\n\n<p>De tant en tant, segons el nostre criteri, podem incloure o oferir productes o serveis de tercers al nostre lloc. Aquests llocs de tercers tenen polítiques de privadesa separades i independents. Per tant, no tenim responsabilitat ni responsabilitat civil pel contingut i les activitats d'aquests llocs enllaçats. No obstant això, busquem protegir la integritat del nostre lloc i donem la benvinguda a qualsevol comentari sobre aquests llocs.</p>\n\n<h3 id=\"coppa\">Compliment de la Llei de protecció de la privacitat en línia dels nens</h3>\n\n<p>El nostre lloc, productes i serveis estan dirigits a persones que tenen almenys 13 anys. Si aquest servidor es troba als EUA, i teniu menys de 13 anys, segons els requisits de COPPA (<a href=\"https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection Act</a>) no feu servir aquest lloc.</p>\n\n<h3 id=\"online\">Només la política de privacitat en línia</h3>\n\n<p>Aquesta política de privacitat en línia només s'aplica a la informació recopilada a través del nostre lloc i no a la informació recopilada fora de línia.</p>\n\n<h3 id=\"consent\">El vostre consentiment</h3>\n\n<p>En utilitzar el nostre lloc, accepta la política de privadesa del nostre lloc web.</p>\n\n<h3 id=\"changes\">Canvis a la nostra política de privacitat</h3>\n\n<p>Si decidim canviar la nostra política de privadesa, publicarem aquests canvis en aquesta pàgina.</p>\n\n<p>Aquest document és CC-BY-SA. Es va actualitzar per última vegada el 31 de maig de 2013.</p>\n\n<p>Originalment adaptat a la <a href=\"https://github.com/discourse/discourse\">política de privadesa del Discurs</a>.</p>\n"
+    title: "%{instance} Condicions del servei i política de privadesa"
   time:
     formats:
       default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
     code_hint: Introdueix el codi generat per l'aplicació autenticadora per a confirmar
     description_html: Si habilites la <strong>autenticació de dos factors</strong>, et caldrà tenir el teu telèfon, que generarà tokens per a que puguis iniciar sessió.
-    disable: Deshabilitar
+    disable: Deshabilitarr
     enable: Habilitar
+    enabled: Two-factor authentication is enabled
     enabled_success: Autenticació de dos factors activada amb èxit
     generate_recovery_codes: Generar codis de recuperació
     instructions_html: "<strong>Escaneja aquest codi QR desde Google Authenticator o una aplicació similar del teu telèfon</strong>. Desde ara, aquesta aplicació generarà tokens que tens que ingresar quan volguis iniciar sessió."
     lost_recovery_codes: Els codis de recuperació et permeten recuperar l'accés al teu compte si perds el telèfon. Si has perdut els teus codis de recuperació els pots regenerar aquí. Els codis de recuperació anteriors seran anul·lats.
     manual_instructions: 'Si no pots escanejar el codi QR code i necessites introduir-lo manualment, aquí tens el secret en text plà:'
+    recovery_codes: Backup recovery codes
     recovery_codes_regenerated: Codis de recuperació regenerats amb èxit
     recovery_instructions_html: Si alguna vegada perds l'accéss al telèfon pots utilitzar un dels codis de recuperació a continuació per recuperar l'accés al teu compte. Cal mantenir els codis de recuperació en lloc segur, per exemple imprimint-los i guardar-los amb altres documents importants.
     setup: Establir
@@ -337,3 +464,4 @@ ca:
   users:
     invalid_email: La direcció de correu es incorrecte
     invalid_otp_token: Codi de dos factors incorrecte
+    signed_in_as: 'Sessió iniciada com a:'
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 87c5fa67a..de6c86737 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -12,15 +12,15 @@ de:
     source_code: Quellcode
     status_count_after: Beiträge verfassten
     status_count_before: die
-    user_count_after: Benutzer
+    user_count_after: Profile
     user_count_before: Heimat für
   accounts:
     follow: Folgen
     followers: Folgende
     following: Folgt
     nothing_here: Hier gibt es nichts!
-    people_followed_by: Nutzer, denen %{name} folgt
-    people_who_follow: Nutzer, die %{name} folgen
+    people_followed_by: Profile, denen %{name} folgt
+    people_who_follow: Profile, die %{name} folgen
     posts: Beiträge
     remote_follow: Folgen
     unfollow: Entfolgen
@@ -67,7 +67,7 @@ de:
       title: Konten
       undo_silenced: Stummschaltung zurücknehmen
       undo_suspension: Sperre zurücknehmen
-      username: Benutzername
+      username: Profilname
       web: Web
     domain_blocks:
       add_new: Neu hinzufügen
@@ -124,7 +124,7 @@ de:
     settings:
       contact_information:
         email: Eine öffentliche E-Mail-Adresse angeben
-        username: Einen Benutzernamen angeben
+        username: Einen Profilnamen angeben
       registrations:
         closed_message:
           desc_html: Wird auf der Frontseite angezeigt, wenn die Registrierung geschlossen ist<br>Du kannst HTML-Tags benutzen
@@ -166,7 +166,6 @@ de:
   authorize_follow:
     error: Das Profil konnte nicht geladen werden
     follow: Folgen
-    prompt_html: 'Du (<strong>%{self}</strong>) möchtest dieser Person folgen:'
     title: "%{acct} folgen"
   datetime:
     distance_in_words:
@@ -209,7 +208,7 @@ de:
       following: Folgeliste
       muting: Stummschaltungsliste
     upload: Hochladen
-  landing_strip_html: "<strong>%{name}</strong> ist ein Benutzer auf %{link_to_root_path}. Du kannst ihm folgen oder mit ihm interagieren, sofern du ein Konto irgendwo in der Fediverse hast."
+  landing_strip_html: "<strong>%{name}</strong> hat ein Profil auf %{link_to_root_path}. Du kannst folgen oder interagieren, sofern du ein Konto irgendwo im Fediversum hast."
   landing_strip_signup_html: Wenn nicht, kannst du dich <a href="%{sign_up_path}">hier anmelden</a>.
   media_attachments:
     validations:
@@ -240,12 +239,23 @@ de:
     reblog:
       body: 'Dein Beitrag wurde von %{name} geteilt:'
       subject: "%{name} teilte deinen Beitrag."
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Vorwärts
     prev: Zurück
     truncate: "&hellip;"
   remote_follow:
-    acct: Dein Nutzername@Domain, von dem aus du dieser Person folgen möchtest.
+    acct: Dein Profilname@Domain, von dem aus du dieser Person folgen möchtest.
     missing_resource: Die erforderliche Weiterleitungs-URL konnte leider in deinem Profil nicht gefunden werden.
     proceed: Weiter
     prompt: 'Du wirst dieser Person folgen:'
diff --git a/config/locales/devise.bg.yml b/config/locales/devise.bg.yml
index 7485b8236..8e1ba6eb4 100644
--- a/config/locales/devise.bg.yml
+++ b/config/locales/devise.bg.yml
@@ -11,7 +11,7 @@ bg:
       invalid: Невалиден имейл адрес или парола.
       last_attempt: Разполагаш с още един опит преди профилът ти да бъде заключен.
       locked: Профилът ти е заключен.
-      not_found_in_database: "Невалидни стойности за %{authentication_keys} или парола."
+      not_found_in_database: Невалидни стойности за %{authentication_keys} или парола.
       timeout: Сесията ти изтече, моля влез отново, за да продължиш.
       unauthenticated: Преди да продължиш, трябва да влезеш в профила си или да се регистрираш.
       unconfirmed: Преди да продължиш, трябва да потвърдиш регистрацията си.
@@ -21,12 +21,12 @@ bg:
       password_change:
         subject: 'Mastodon: Паролата е променена'
       reset_password_instructions:
-        subject: 'Инструкции за смяна на паролата'
+        subject: Инструкции за смяна на паролата
       unlock_instructions:
-        subject: 'Инструкции за отключване'
+        subject: Инструкции за отключване
     omniauth_callbacks:
-      failure: "Не успяхме да те упълномощим чрез %{kind}, защото \"%{reason}\"."
-      success: "Успешно упълномощаване чрез %{kind} профил."
+      failure: Не успяхме да те упълномощим чрез %{kind}, защото "%{reason}".
+      success: Успешно упълномощаване чрез %{kind} профил.
     passwords:
       no_token: Може да достъпваш тази страница само от имейл за промяна на паролата. Ако тази страница е отворена от такъв имейл, увери се, че използваш целия URL-адрес, който сме ти изпратили.
       send_instructions: Ще получиш писмо с инструкции как да промениш паролата си до няколко минути.
@@ -52,10 +52,10 @@ bg:
   errors:
     messages:
       already_confirmed: е вече потвърден, моля опитай да влезеш в профила си с него
-      confirmation_period_expired: "трябва да се потвърди в рамките на %{period}, моля направи нова заявка за потвърждение"
+      confirmation_period_expired: трябва да се потвърди в рамките на %{period}, моля направи нова заявка за потвърждение
       expired: е изтекъл, моля заяви нов
       not_found: не е намерен
       not_locked: не бе заключен
       not_saved:
-        one: "Една грешка попречи този %{resource} да бъде записан:"
+        one: 'Една грешка попречи този %{resource} да бъде записан:'
         other: "%{count} грешки попречиха този %{resource} да бъде записан:"
diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml
index 58bfaa3d6..035a4713c 100644
--- a/config/locales/devise.de.yml
+++ b/config/locales/devise.de.yml
@@ -2,60 +2,60 @@
 de:
   devise:
     confirmations:
-      confirmed: "Vielen Dank für deine Registrierung. Bitte melde dich jetzt an."
-      send_instructions: "Du erhältst in wenigen Minuten eine E-Mail, mit der du deine Registrierung bestätigen kannst."
-      send_paranoid_instructions: "Falls Deine E-Mail-Adresse in unserer Datenbank existiert, erhältst Du in wenigen Minuten eine E-Mail mit der du deine Registrierung bestätigen kannst."
+      confirmed: Vielen Dank für deine Registrierung. Bitte melde dich jetzt an.
+      send_instructions: Du erhältst in wenigen Minuten eine E-Mail, mit der du deine Registrierung bestätigen kannst.
+      send_paranoid_instructions: Falls Deine E-Mail-Adresse in unserer Datenbank existiert, erhältst Du in wenigen Minuten eine E-Mail mit der du deine Registrierung bestätigen kannst.
     failure:
-      already_authenticated: "Du bist bereits angemeldet."
-      inactive: "Dein Account ist nicht aktiv."
-      invalid: "Ungültige Anmeldedaten."
-      last_attempt: "Du hast noch einen Versuch bevor dein Account gesperrt wird."
-      locked: "Dein Account ist gesperrt."
-      not_found_in_database: "E-Mail-Adresse oder Passwort ungültig."
-      timeout: "Deine Sitzung ist abgelaufen, bitte melde dich erneut an."
-      unauthenticated: "Du musst Dich anmelden oder registrieren, bevor du fortfahren kannst."
-      unconfirmed: "Du musst deinen Account bestätigen, bevor du fortfahren kannst."
+      already_authenticated: Du bist bereits angemeldet.
+      inactive: Dein Account ist nicht aktiv.
+      invalid: Ungültige Anmeldedaten.
+      last_attempt: Du hast noch einen Versuch bevor dein Account gesperrt wird.
+      locked: Dein Account ist gesperrt.
+      not_found_in_database: E-Mail-Adresse oder Passwort ungültig.
+      timeout: Deine Sitzung ist abgelaufen, bitte melde dich erneut an.
+      unauthenticated: Du musst Dich anmelden oder registrieren, bevor du fortfahren kannst.
+      unconfirmed: Du musst deinen Account bestätigen, bevor du fortfahren kannst.
     mailer:
       confirmation_instructions:
-        subject: "Mastodon: Anleitung zur Bestätigung deines Accounts"
+        subject: 'Mastodon: Anleitung zur Bestätigung deines Accounts'
       password_change:
         subject: 'Mastodon: Passwort wurde geändert'
       reset_password_instructions:
-        subject: "Mastodon: Anleitung um dein Passwort zurückzusetzen"
+        subject: 'Mastodon: Anleitung um dein Passwort zurückzusetzen'
       unlock_instructions:
-        subject: "Mastodon: Anleitung um deinen Account freizuschalten"
+        subject: 'Mastodon: Anleitung um deinen Account freizuschalten'
     omniauth_callbacks:
-      failure: "Du konntest nicht mit deinem %{kind}-Account angemeldet werden, weil '%{reason}'."
-      success: "Du hast dich erfolgreich mit Deinem %{kind}-Account angemeldet."
+      failure: Du konntest nicht mit deinem %{kind}-Account angemeldet werden, weil '%{reason}'.
+      success: Du hast dich erfolgreich mit Deinem %{kind}-Account angemeldet.
     passwords:
-      no_token: "Du kannst diese Seite nur über den Link aus der E-Mail zum Passwort-Zurücksetzen aufrufen. Wenn du einen solchen Link aufgerufen hast, stelle bitte sicher, dass du die vollständige Adresse aufrufst."
-      send_instructions: "Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie du dein Passwort zurücksetzen kannst."
-      send_paranoid_instructions: "Falls deine E-Mail-Adresse in unserer Datenbank existiert erhältst du in wenigen Minuten eine E-Mail mit der Anleitung, wie du dein Passwort zurücksetzen kannst."
-      updated: "Dein Passwort wurde geändert. Du bist jetzt angemeldet."
-      updated_not_active: "Dein Passwort wurde geändert."
+      no_token: Du kannst diese Seite nur über den Link aus der E-Mail zum Passwort-Zurücksetzen aufrufen. Wenn du einen solchen Link aufgerufen hast, stelle bitte sicher, dass du die vollständige Adresse aufrufst.
+      send_instructions: Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie du dein Passwort zurücksetzen kannst.
+      send_paranoid_instructions: Falls deine E-Mail-Adresse in unserer Datenbank existiert erhältst du in wenigen Minuten eine E-Mail mit der Anleitung, wie du dein Passwort zurücksetzen kannst.
+      updated: Dein Passwort wurde geändert. Du bist jetzt angemeldet.
+      updated_not_active: Dein Passwort wurde geändert.
     registrations:
-      destroyed: "Dein Account wurde gelöscht."
-      signed_up: "Du hast dich erfolgreich registriert."
-      signed_up_but_inactive: "Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account inaktiv ist."
-      signed_up_but_locked: "Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account gesperrt ist."
-      signed_up_but_unconfirmed: "Du hast Dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail mit der Anleitung, wie Du Deinen Account freischalten kannst."
-      update_needs_confirmation: "Deine Daten wurden aktualisiert, aber du musst deine neue E-Mail-Adresse bestätigen. Du erhälst in wenigen Minuten eine E-Mail, mit der du die Änderung deiner E-Mail-Adresse abschließen kannst."
-      updated: "Deine Daten wurden aktualisiert."
+      destroyed: Dein Account wurde gelöscht.
+      signed_up: Du hast dich erfolgreich registriert.
+      signed_up_but_inactive: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account inaktiv ist.
+      signed_up_but_locked: Du hast dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account gesperrt ist.
+      signed_up_but_unconfirmed: Du hast Dich erfolgreich registriert. Wir konnten dich noch nicht anmelden, da dein Account noch nicht bestätigt ist. Du erhältst in Kürze eine E-Mail mit der Anleitung, wie Du Deinen Account freischalten kannst.
+      update_needs_confirmation: Deine Daten wurden aktualisiert, aber du musst deine neue E-Mail-Adresse bestätigen. Du erhälst in wenigen Minuten eine E-Mail, mit der du die Änderung deiner E-Mail-Adresse abschließen kannst.
+      updated: Deine Daten wurden aktualisiert.
     sessions:
-      already_signed_out: "Erfolgreich abgemeldet."
-      signed_in: "Erfolgreich angemeldet."
-      signed_out: "Erfolgreich abgemeldet."
+      already_signed_out: Erfolgreich abgemeldet.
+      signed_in: Erfolgreich angemeldet.
+      signed_out: Erfolgreich abgemeldet.
     unlocks:
-      send_instructions: "Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie du deinen Account entsperren können."
-      send_paranoid_instructions: "Falls deine E-Mail-Adresse in unserer Datenbank existiert erhältst du in wenigen Minuten eine E-Mail mit der Anleitung, wie du deinen Account entsperren kannst."
-      unlocked: "Dein Account wurde entsperrt. Du bist jetzt angemeldet."
+      send_instructions: Du erhältst in wenigen Minuten eine E-Mail mit der Anleitung, wie du deinen Account entsperren können.
+      send_paranoid_instructions: Falls deine E-Mail-Adresse in unserer Datenbank existiert erhältst du in wenigen Minuten eine E-Mail mit der Anleitung, wie du deinen Account entsperren kannst.
+      unlocked: Dein Account wurde entsperrt. Du bist jetzt angemeldet.
   errors:
     messages:
-      already_confirmed: "wurde bereits bestätigt."
-      confirmation_period_expired: "muss innerhalb %{period} bestätigt werden, bitte fordere einen neuen Link an."
-      expired: "ist abgelaufen, bitte neu anfordern."
-      not_found: "wurde nicht gefunden."
-      not_locked: "ist nicht gesperrt"
+      already_confirmed: wurde bereits bestätigt.
+      confirmation_period_expired: muss innerhalb %{period} bestätigt werden, bitte fordere einen neuen Link an.
+      expired: ist abgelaufen, bitte neu anfordern.
+      not_found: wurde nicht gefunden.
+      not_locked: ist nicht gesperrt
       not_saved:
-        one: "Konnte %{resource} nicht speichern: ein Fehler."
-        other: "Konnte %{resource} nicht speichern: %{count} Fehler."
+        one: 'Konnte %{resource} nicht speichern: ein Fehler.'
+        other: 'Konnte %{resource} nicht speichern: %{count} Fehler.'
diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml
index b786647dd..a2303ec1e 100644
--- a/config/locales/devise.eo.yml
+++ b/config/locales/devise.eo.yml
@@ -58,4 +58,4 @@ eo:
       not_locked: ne estis ŝlosita
       not_saved:
         one: '1 eraro malpermesis al tiu %{resource} esti konservita:'
-        other: '%{count} eraroj malpermesis al tiu %{resource} esti konservita:'
+        other: "%{count} eraroj malpermesis al tiu %{resource} esti konservita:"
diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml
index 634a5e97f..5a689f347 100644
--- a/config/locales/devise.es.yml
+++ b/config/locales/devise.es.yml
@@ -34,8 +34,8 @@ es:
       updated: Su contraseña ha sido cambiada con éxito. Ahora ya está registrado.
       updated_not_active: Su contraseña ha sido cambiada con éxito.
     registrations:
-      destroyed: ¡Adios! Su cuenta ha sido cancelada con éxito. Esperamos verle pronto de nuevo.
-      signed_up: ¡Bienvenido! Se ha registrado con éxito.
+      destroyed: "¡Adios! Su cuenta ha sido cancelada con éxito. Esperamos verle pronto de nuevo."
+      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_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.
diff --git a/config/locales/devise.fa.yml b/config/locales/devise.fa.yml
index 18f63b25d..f78412f91 100644
--- a/config/locales/devise.fa.yml
+++ b/config/locales/devise.fa.yml
@@ -57,5 +57,5 @@ fa:
       not_found: پیدا نشد
       not_locked: قفل نبود
       not_saved:
-        one: 'خطایی نگذاشت که این %{resource} ذخیره شود'
-        other: "به خاطر %{count} خطا، این %{resource} ذخیره نشد"
+        one: خطایی نگذاشت که این %{resource} ذخیره شود
+        other: به خاطر %{count} خطا، این %{resource} ذخیره نشد
diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml
index bf4f530dc..91ab9559c 100644
--- a/config/locales/devise.fi.yml
+++ b/config/locales/devise.fi.yml
@@ -29,7 +29,7 @@ fi:
       success: Onnistuneesti varmennettu %{kind} tilillä.
     passwords:
       no_token: Et pääse tälle sivulle ilman salasanan vaihto sähköpostia. Jos tulet tämmöisestä postista, varmista että sinulla on täydellinen URL.
-      send_instructions:  Jos sähköpostisi on meidän tietokannassa, saat pian ohjeet salasanan palautukseen.
+      send_instructions: Jos sähköpostisi on meidän tietokannassa, saat pian ohjeet salasanan palautukseen.
       send_paranoid_instructions: Jos sähköpostisi on meidän tietokannassa, saat pian ohjeet salasanan palautukseen.
       updated: Salasanasi vaihdettu onnistuneesti. Olet nyt kirjautunut sisään.
       updated_not_active: Salasanasi vaihdettu onnistuneesti.
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index 6805e4f38..237ae8f6f 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -17,7 +17,7 @@ fr:
       unconfirmed: Vous devez valider votre compte pour continuer.
     mailer:
       confirmation_instructions:
-        subject: "Merci de confirmer votre inscription sur %{instance}"
+        subject: Merci de confirmer votre inscription sur %{instance}
       password_change:
         subject: Votre mot de passe a été modifié avec succés.
       reset_password_instructions:
@@ -58,4 +58,4 @@ fr:
       not_locked: n’était pas verrouillé⋅e
       not_saved:
         one: 'Une erreur a empêché ce(tte) %{resource} d’être sauvegardé⋅e :'
-        other: '%{count} erreurs ont empêché %{resource} d’être sauvegardé⋅e :'
+        other: "%{count} erreurs ont empêché %{resource} d’être sauvegardé⋅e :"
diff --git a/config/locales/devise.he.yml b/config/locales/devise.he.yml
index 975c2a360..ddb688625 100644
--- a/config/locales/devise.he.yml
+++ b/config/locales/devise.he.yml
@@ -2,19 +2,19 @@
 he:
   devise:
     confirmations:
-      confirmed: 'כתובת הדוא"ל אומתה בהצלחה.'
-      send_instructions: 'נשלח אליך דוא"ל עם הוראות לאימות כתובת הדוא"ל שאמור להתקבל בדקות הקרובות. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
-      send_paranoid_instructions: 'אם כתובת הדוא"ל שלך קיימת במסד הנתונים, יתקבל בדקות הקרובות דוא"ל עם הוראות לאימות כתובתך. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
+      confirmed: כתובת הדוא"ל אומתה בהצלחה.
+      send_instructions: נשלח אליך דוא"ל עם הוראות לאימות כתובת הדוא"ל שאמור להתקבל בדקות הקרובות. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
+      send_paranoid_instructions: אם כתובת הדוא"ל שלך קיימת במסד הנתונים, יתקבל בדקות הקרובות דוא"ל עם הוראות לאימות כתובתך. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
     failure:
-      already_authenticated: 'חשבון זה כבר מחובר.'
-      inactive: 'חשבון זה טרם הופעל.'
-      invalid: '%{authentication_keys} או סיסמא לא נכונים.'
-      last_attempt: 'יש לך עוד ניסיון אחד לפני נעילת החשבון.'
-      locked: 'חשבון זה נעול.'
+      already_authenticated: חשבון זה כבר מחובר.
+      inactive: חשבון זה טרם הופעל.
+      invalid: "%{authentication_keys} או סיסמא לא נכונים."
+      last_attempt: יש לך עוד ניסיון אחד לפני נעילת החשבון.
+      locked: חשבון זה נעול.
       not_found_in_database: "%{authentication_keys} או סיסמא לא נכונים."
-      timeout: 'פג תוקף השהיה בחשבון. נא להכנס מחדש על מנת להמשיך.'
-      unauthenticated: 'יש להרשם או להכנס לחשבון על מנת להמשיך.'
-      unconfirmed: 'יש לאמת את כתובת הדוא"ל על מנת להמשיך.'
+      timeout: פג תוקף השהיה בחשבון. נא להכנס מחדש על מנת להמשיך.
+      unauthenticated: יש להרשם או להכנס לחשבון על מנת להמשיך.
+      unconfirmed: יש לאמת את כתובת הדוא"ל על מנת להמשיך.
     mailer:
       confirmation_instructions:
         subject: 'מסטודון: הוראות אימות'
@@ -25,29 +25,29 @@ he:
       unlock_instructions:
         subject: 'מסטודון: הוראות לביטול נעילה'
     omniauth_callbacks:
-      failure: "לא ניתן לאמת את חשבונך מ־%{kind} מהסיבה: \"%{reason}\"."
-      success: "נכשל אימות מחשבון %{kind}."
+      failure: 'לא ניתן לאמת את חשבונך מ־%{kind} מהסיבה: "%{reason}".'
+      success: נכשל אימות מחשבון %{kind}.
     passwords:
-      no_token: 'לא ניתן לגשת לעמוד זה, אלא מדוא"ל איפוס סיסמא. אם לא הגעת מדוא"ל איפוס סיסמא, יש לוודא שכתובת הקישורית הוקלדה בשלמותה.'
-      send_instructions: 'בדקות הקרובות יתקבל דוא"ל עם הוראות לאיפוס סיסמתך. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
-      send_paranoid_instructions: 'אם כתובת הדוא"ל שלך קיימת במסד הנתונים, יתקבל בדקות הקרובות דוא"ל עם הוראות לאחזור סיסמא. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
-      updated: 'סיסמתך שונתה בהצלחה. הינך כעת במצב מחובר.'
-      updated_not_active: 'סיסמתך שונתה בהצלחה.'
+      no_token: לא ניתן לגשת לעמוד זה, אלא מדוא"ל איפוס סיסמא. אם לא הגעת מדוא"ל איפוס סיסמא, יש לוודא שכתובת הקישורית הוקלדה בשלמותה.
+      send_instructions: בדקות הקרובות יתקבל דוא"ל עם הוראות לאיפוס סיסמתך. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
+      send_paranoid_instructions: אם כתובת הדוא"ל שלך קיימת במסד הנתונים, יתקבל בדקות הקרובות דוא"ל עם הוראות לאחזור סיסמא. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
+      updated: סיסמתך שונתה בהצלחה. הינך כעת במצב מחובר.
+      updated_not_active: סיסמתך שונתה בהצלחה.
     registrations:
-      destroyed: 'בייוש! חשבונך בוטל בהצלחה. אנחנו מקווים לראות אותך שוב בקרוב.'
-      signed_up: 'ברוכים הבאים! נרשמת בהצלחה.'
-      signed_up_but_inactive: 'נרשמת בהצלחה. למרות זאת לא הצליחה הכניסה לחשבון מאחר וחשבונך עוד לא הופעל.'
-      signed_up_but_locked: 'נרשמת בהצלחה. למרות זאת לא הצליחה הכניסה לחשבון מאחר וחשבונך נעול.'
-      signed_up_but_unconfirmed: 'דוא"ל עם קישורית לאימות נשלך לכתובתך. נא לעקוב אחר הקישורית על מנת להפעיל את החשבון. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
-      update_needs_confirmation: 'עדכת את חשבונך בהצלחה, אך יש צורך לאמת את כתובת הדוא"ל החדשה שלך. נא לבדוק בחשבון הדוא"ל לקבלת קישורית אימות על מנת לאמת את הכתובת החדשה. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
+      destroyed: בייוש! חשבונך בוטל בהצלחה. אנחנו מקווים לראות אותך שוב בקרוב.
+      signed_up: ברוכים הבאים! נרשמת בהצלחה.
+      signed_up_but_inactive: נרשמת בהצלחה. למרות זאת לא הצליחה הכניסה לחשבון מאחר וחשבונך עוד לא הופעל.
+      signed_up_but_locked: נרשמת בהצלחה. למרות זאת לא הצליחה הכניסה לחשבון מאחר וחשבונך נעול.
+      signed_up_but_unconfirmed: דוא"ל עם קישורית לאימות נשלך לכתובתך. נא לעקוב אחר הקישורית על מנת להפעיל את החשבון. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
+      update_needs_confirmation: עדכת את חשבונך בהצלחה, אך יש צורך לאמת את כתובת הדוא"ל החדשה שלך. נא לבדוק בחשבון הדוא"ל לקבלת קישורית אימות על מנת לאמת את הכתובת החדשה. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
       updated: חשבונך עודכן בהצלחה.
     sessions:
       already_signed_out: יצאת מהחשבון בהצלחה.
       signed_in: נכנסת לחשבון בהצלחה.
       signed_out: יצאת מהחשבון בהצלחה.
     unlocks:
-      send_instructions: 'בדקות הקרובות ישלח אליך דוא"ל עם הוראות לביטול נעילת החשבון. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
-      send_paranoid_instructions: 'אם חשבונך קיים, בדקות הקרובות ישלח אליך דוא"ל עם הוראות לביטול נעילת החשבון. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.'
+      send_instructions: בדקות הקרובות ישלח אליך דוא"ל עם הוראות לביטול נעילת החשבון. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
+      send_paranoid_instructions: אם חשבונך קיים, בדקות הקרובות ישלח אליך דוא"ל עם הוראות לביטול נעילת החשבון. יש לבדוק את תיבת הספאם ליתר בטחון אם ההודעה לא הגיעה תוך דקות ספורות.
       unlocked: נעילת חשבונך בוטלה בהצלחה. נא להכנס לחשבון על מנת להמשיך.
   errors:
     messages:
diff --git a/config/locales/devise.hu.yml b/config/locales/devise.hu.yml
index 2eb7da45c..911ba7b94 100644
--- a/config/locales/devise.hu.yml
+++ b/config/locales/devise.hu.yml
@@ -28,7 +28,7 @@ hu:
       failure: "%{kind} nem hitelesíthető, mert %{reason}."
       success: Sikeres hitelesítés %{kind} fiókról.
     passwords:
-      no_token: Nem férhetsz hozzá az oldalhoz jelszó visszaállító e-mail nélkül. Ha egy jelszó visszaállító e-mail hozott ide, ellenőrizd, hogy a megadott teljes URL-t használd. 
+      no_token: Nem férhetsz hozzá az oldalhoz jelszó visszaállító e-mail nélkül. Ha egy jelszó visszaállító e-mail hozott ide, ellenőrizd, hogy a megadott teljes URL-t használd.
       send_instructions: Pár percen belül kapni fogsz egy e-mailt arról, hogy hogyan tudod visszaállítani a jelszavadat.
       send_paranoid_instructions: Ha létezik az e-mail cím, pár percen belül kapni fogsz egy e-mailt arról, hogy hogyan tudod visszaállítani a jelszavadat.
       updated: Jelszavad sikeresen frissült. Bejelentkeztél.
@@ -36,7 +36,7 @@ hu:
     registrations:
       destroyed: Viszlát! A fiókod sikeresen törölve. Reméljük hamarosan viszontláthatunk.
       signed_up: Üdvözlünk! Sikeresen regisztráltál.
-      signed_up_but_inactive: Sikeresen regisztráltál. Ennek ellenére nem tudunk beléptetni, ugyanis a fiókod még nem lett aktiválva. 
+      signed_up_but_inactive: Sikeresen regisztráltál. Ennek ellenére nem tudunk beléptetni, ugyanis a fiókod még nem lett aktiválva.
       signed_up_but_locked: Sikeresen regisztráltál. Ennek ellenére nem tudunk beléptetni, ugyanis a fiókod le lett zárva.
       signed_up_but_unconfirmed: Egy üzenet a megerősítési linkkel kiküldésre került az e-mail címedre. Kérjük használd a linket a fiókod aktiválásához.
       update_needs_confirmation: Sikeresen frissítetted a fiókodat, de szükségünk van az e-mail címed megerősítésére. Kérlek ellenőrizd az e-mailedet és kövesd a levélben szereplő megerősítési linket az e-mail címed megerősítéséhez.
diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml
index 5d61ccdec..aa333920e 100644
--- a/config/locales/devise.ja.yml
+++ b/config/locales/devise.ja.yml
@@ -8,10 +8,10 @@ ja:
     failure:
       already_authenticated: 既にログイン済みです。
       inactive: あなたのアカウントはまだ有効化されていません。
-      invalid: '%{authentication_keys}かパスワードが誤っています。'
+      invalid: "%{authentication_keys}かパスワードが誤っています。"
       last_attempt: あと1回失敗するとアカウントがロックされます。
       locked: アカウントはロックされました。
-      not_found_in_database: '%{authentication_keys}かパスワードが誤っています'
+      not_found_in_database: "%{authentication_keys}かパスワードが誤っています。"
       timeout: セッションの有効期限が切れました。続行するには再度ログインしてください。
       unauthenticated: 続行するにはログインするか、アカウントを作成してください。
       unconfirmed: 続行するにはメールアドレスを確認する必要があります。
@@ -25,8 +25,8 @@ ja:
       unlock_instructions:
         subject: 'Mastodon: アカウントのロックの解除'
     omniauth_callbacks:
-      failure: '%{reason}によって%{kind}からのアクセスを認証できませんでした。'
-      success: '%{kind}からのアクセスは正常に認証されました。'
+      failure: "%{reason}によって%{kind}からのアクセスを認証できませんでした。"
+      success: "%{kind}からのアクセスは正常に認証されました。"
     passwords:
       no_token: パスワード再発行のメール以外からこのページにアクセスすることはできません。 パスワード再発行のメールからアクセスしたのにもかかわらずこのメッセージが表示される場合は、アクセスしたURLが間違っていないか確認してください。
       send_instructions: パスワード再発行の方法が記載されたメールが間もなく送信されます。
@@ -52,10 +52,10 @@ ja:
   errors:
     messages:
       already_confirmed: は確認されました。ログインを試してください。
-      confirmation_period_expired: '%{period}以内に確認が必要です。再度試してください。'
+      confirmation_period_expired: "%{period}以内に確認が必要です。再度試してください。"
       expired: は期限切れです。再度試してください。
       not_found: 見つかりません。
       not_locked: ロックされていません。
       not_saved:
-        one: 'エラーが発生したため、%{resource}の保存に失敗しました。'
+        one: エラーが発生したため、%{resource}の保存に失敗しました。
         other: "%{count}個のエラーが発生したため、保存に失敗しました。 %{resource}"
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index f8f59e660..ff79d036e 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -24,7 +24,7 @@ nl:
       reset_password_instructions:
         subject: 'Mastodon: Wachtwoord opnieuw instellen'
       unlock_instructions:
-        subject: 'Mastodon: Instructies om opschorten account ongedaan te maken' 
+        subject: 'Mastodon: Instructies om opschorten account ongedaan te maken'
     omniauth_callbacks:
       failure: Kon je niet aanmelden met jouw %{kind} account, omdat "%{reason}".
       success: Successvol aangemeld met jouw %{kind} account.
diff --git a/config/locales/devise.oc.yml b/config/locales/devise.oc.yml
index 77740f230..5cccb48ff 100644
--- a/config/locales/devise.oc.yml
+++ b/config/locales/devise.oc.yml
@@ -17,13 +17,13 @@ oc:
       unconfirmed: Vos cal confirmar vòstra adreça de corrièl abans de contunhar.
     mailer:
       confirmation_instructions:
-        subject: "Mercés de confirmar vòstra inscripcion sus %{instance}"
+        subject: Mercés de confirmar vòstra inscripcion sus %{instance}
       password_change:
-        subject: 'Mastodon : senhal cambiat'
+        subject: Mastodon : senhal cambiat
       reset_password_instructions:
-        subject: 'Mastodon : instruccions per reïnicializar lo senhal'
+        subject: Mastodon : instruccions per reïnicializar lo senhal
       unlock_instructions:
-        subject: 'Mastodon : instuccions de desblocatge'
+        subject: Mastodon : instuccions de desblocatge
     omniauth_callbacks:
       failure: Fracàs al moment de vos autentificar de %{kind} perque "%{reason}".
       success: Sètz ben autentificat dempuèi lo compte %{kind}.
@@ -34,8 +34,8 @@ oc:
       updated: Vòstre senhal es ben estat cambiat. Sètz ara connectat.
       updated_not_active: Vòstre senhal es ben estat cambiat.
     registrations:
-      destroyed: Adiu ! Vòstra inscripcion es estada anullada amb succès. Esperem vos tornar veire lèu.
-      signed_up: La benvenguda ! Sètz ben marcat al malhum.
+      destroyed: Adiu ! Vòstra inscripcion es estada anullada amb succès. Esperem vos tornar veire lèu.
+      signed_up: La benvenguda ! Sètz ben marcat al malhum.
       signed_up_but_inactive: Sètz ben marcat. Pasmens, avèm pas pogut vos connectar perque vòstre compte es pas encara validat.
       signed_up_but_locked: Sètz ben marcat. Pasmens, avèm pas pogut vos connectar perque vòstre compte es pas encara blocat.
       signed_up_but_unconfirmed: Un messatge amb un ligam de confirmacion es estat enviat a vòstra adreça de corrièl. Clicatz sul ligam per activar vòstre compte. Mercés de verificar tanben vòstre dorsièr de corrièls indesirables.
@@ -57,5 +57,5 @@ oc:
       not_found: pas trobat
       not_locked: èra pas blocat
       not_saved:
-        one: '1 error defend aquesta %{resource} d’èsser salvagardada :'
-        other: "%{count} errors defendon aquesta %{resource} d’èsser salvagardadas :"
+        one: '1 error defend aquesta %{resource} d’èsser salvagardada :'
+        other: "%{count} errors defendon aquesta %{resource} d’èsser salvagardadas :"
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index 1c692f7a8..4b1eb2c60 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -12,9 +12,9 @@ pl:
       last_attempt: Masz jeszcze jedną próbę; Twoje konto zostanie zablokowane jeśli się nie powiedzie.
       locked: Twoje konto zostało zablokowane.
       not_found_in_database: Nieprawidłowy %{authentication_keys} lub hasło.
-      timeout: Twoja sesja wygasła. Zaloguj się ponownie aby kontynuować..
-      unauthenticated: Zapisz się lub zaloguj aby kontynuować.
-      unconfirmed: Zweryfikuj adres e-mail aby kontynuować.
+      timeout: Twoja sesja wygasła. Zaloguj się ponownie, aby kontynuować..
+      unauthenticated: Zapisz się lub zaloguj, aby kontynuować.
+      unconfirmed: Zweryfikuj adres e-mail, aby kontynuować.
     mailer:
       confirmation_instructions:
         subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail'
@@ -38,7 +38,7 @@ pl:
       signed_up: Twoje konto zostało utworzone. Witamy!
       signed_up_but_inactive: Twoje konto zostało utworzone. Nie mogliśmy Cię jednak zalogować, ponieważ konto nie zostało jeszcze aktywowane.
       signed_up_but_locked: Twoje konto zostało utworzone. Nie mogliśmy Cię jednak zalogować, ponieważ konto jest zablokowane.
-      signed_up_but_unconfirmed: Na Twój adres e-mail została wysłana wiadomosć z odnośnikiem potwierdzającym. Kliknij w odnośnik aby aktywować konto. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
+      signed_up_but_unconfirmed: Na Twój adres e-mail została wysłana wiadomosć z odnośnikiem potwierdzającym. Kliknij w odnośnik, aby aktywować konto. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
       update_needs_confirmation: Konto zostało zaktualizowane, musimy jednak zweryfikować Twój nowy adres e-mail. Została na niego wysłana wiadomość z odnośnikiem potwierdzającym. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
       updated: Konto zostało zaktualizowane.
     sessions:
@@ -48,7 +48,7 @@ pl:
     unlocks:
       send_instructions: W ciągu kilku minut otrzymasz wiadomość e-mail z instrukcjami odblokowania konta. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
       send_paranoid_instructions: Jeśli Twoje konto istnieje, instrukcje odblokowania go otrzymasz w wiadomości e-mail w ciągu kilku minut. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
-      unlocked: Twoje konto zostało odblokowane. Zaloguj się aby kontynuować.
+      unlocked: Twoje konto zostało odblokowane. Zaloguj się, aby kontynuować.
   errors:
     messages:
       already_confirmed: był już potwierdzony, spróbuj się zalogować
@@ -58,4 +58,4 @@ pl:
       not_locked: było zablokowane
       not_saved:
         one: '1 błąd uniemożliwił zapisanie zasobu %{resource}:'
-        other: "Błędy (%{count}) uniemożliwiły zapisanie zasobu %{resource}:"
+        other: 'Błędy (%{count}) uniemożliwiły zapisanie zasobu %{resource}:'
diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml
index c647fabbd..13736b3a3 100644
--- a/config/locales/devise.pt-BR.yml
+++ b/config/locales/devise.pt-BR.yml
@@ -2,60 +2,60 @@
 pt-BR:
   devise:
     confirmations:
-      confirmed: O seu endereço de email foi confirmado.
-      send_instructions: Você irá receber um email com instruções em como confirmar o seu endereço de email dentro de alguns minutos.
-      send_paranoid_instructions: Se o seu endereço de email já existir na nossa base de dados, irá receber um email com instruções em como confirmá-lo dentro de alguns minutos.
+      confirmed: O seu endereço de e-mail foi confirmado.
+      send_instructions: Você receberá uma mensagem em sua caixa de entrada com instruções sobre como confirmar o seu endereço de e-mail dentro de alguns minutos. Por favor, cheque a sua pasta de spam caso não tenha recebido esta mensagem.
+      send_paranoid_instructions: Se o seu endereço de e-mail já existir em nossa base de dados, você receberá uma mensagem em sua caixa de entrada com instruções sobre confirmá-lo dentro de alguns minutos. Por favor, cheque a sua pasta de spam caso não tenha recebido esta mensagem.
     failure:
       already_authenticated: A sua sessão já está aberta.
       inactive: A sua contra ainda não está ativada.
-      invalid: "%{authentication_keys} ou password inválidos."
-      last_attempt: Tem mais uma tentativa antes de a sua conta ser protegida.
-      locked: A sua conta está protegida
-      not_found_in_database: "%{authentication_keys} ou password inválidos."
-      timeout: A sua sessão expirou. Por favore entre de novo para continuar.
-      unauthenticated: Você precsa de entrar ou registar-se antes de continuar.
-      unconfirmed: Você tem de confirmar o seu endereço de email antes de continuar.
+      invalid: "%{authentication_keys} ou senha inválida."
+      last_attempt: Você tem apenas mais uma tentativa sobrando antes que a sua conta seja bloqueada.
+      locked: A sua conta está bloqueada.
+      not_found_in_database: "%{authentication_keys} ou senha inválida."
+      timeout: A sua sessão expirou. Por favor, entre novamente para continuar.
+      unauthenticated: Você precisa entrar ou registar-se antes de continuar.
+      unconfirmed: Você precisa confirmar o seu endereço de e-mail antes de continuar.
     mailer:
       confirmation_instructions:
         subject: 'Mastodon: Instruções de confirmação'
       password_change:
-        subject: 'Mastodon: Password nova'
+        subject: 'Mastodon: Senha modificada'
       reset_password_instructions:
-        subject: 'Mastodon: Instruções para editar a password'
+        subject: 'Mastodon: Instruções para mudança de senha'
       unlock_instructions:
-        subject: 'Mastodon: Instruções para desproteger a sua conta'
+        subject: 'Mastodon: Instruções de desbloqueio'
     omniauth_callbacks:
-      failure: Could not authenticate you from %{kind} because "%{reason}".
-      success: Successfully authenticated from %{kind} account.
+      failure: Não foi possível autenticá-lo como %{kind} porque "%{reason}".
+      success: Autenticado com sucesso como %{kind}.
     passwords:
-      no_token: Você não pode aceder a esta página sem ter vindo de um email para mudar a password. Se este for o case, por favor faça questão de verificar que usou o URL no email.
-      send_instructions: Irá receber um email com instruções em como mudar a sua password dentro de algns minutos.
-      send_paranoid_instructions: Se  seu endereço de email existe na nossa base de dados, irá receber um link para recuperar a sua password dentro de alguns minutos.
-      updated: A sua password foi alterada. A sua sessão está aberta.
-      updated_not_active: A sua password foi alterada.
+      no_token: Você não pode acessar esta página se não tiver vindo de uma mensagem de mudança de senha. Se este for o caso, por favor verifique se a URL utilizada está completa.
+      send_instructions: Se o seu endereço de e-mail já estiver cadastrado em nossa base de dados, você receberá uma mensagem com um link para realizar a mudança de senha em alguns minutos. Por favor, cheque a sua pasta de spam caso não tenha recebido esta mensagem.
+      send_paranoid_instructions: Se o seu endereço de e-mail já estiver cadastrado em nossa base de dados, você receberá uma mensagem com um link para realizar a mudança de senha em alguns minutos. Por favor, cheque a sua pasta de spam caso não tenha recebido esta mensagem.
+      updated: A sua senha foi alterada. A sua sessão está aberta.
+      updated_not_active: A sua senha foi alterada.
     registrations:
       destroyed: Adeus! A sua conta foi cancelada. Esperamos vê-lo em breve.
-      signed_up: Bem vindo! A sua conta foi registada com sucesso.
-      signed_up_but_inactive: A sua conta foi registada. No entanto, não abrimos a sua sessão porque a sua conta ainda não foi ativada.
-      signed_up_but_locked: A sua conta foi registada. No entanto, não abrimos a sua sessão porque a sua conta está protegida.
-      signed_up_but_unconfirmed: Uma mensagem com um link de confirmação foi enviada para o seu email. Por favor siga o link para ativar a sua conta.
-      update_needs_confirmation: Você mudou o seu endereço de email ou password, mas é necessário confirmar a mudança. Por favor siga o link que foi enviado para o seu novo endereço de email.
+      signed_up: Bem vindo! A sua conta foi registrada com sucesso.
+      signed_up_but_inactive: A sua conta foi registrada. No entanto, não abrimos a sua sessão porque a sua conta ainda não foi ativada.
+      signed_up_but_locked: A sua conta foi registrada. No entanto, não abrimos a sua sessão porque a sua conta está bloqueada.
+      signed_up_but_unconfirmed: Uma mensagem com um link de confirmação foi enviada para o seu endereço de e-mail. Por favor, siga o link para ativar a sua conta e, caso não tenha recebido esta mensagem, cheque a sua pasta de spam.
+      update_needs_confirmation: Você mudou o seu endereço de e-mail ou a sua senha, mas é necessário confirmar a mudança. Por favor siga o link que foi enviado para o seu novo endereço de e-mail e, caso não tenha recebido esta mensagem, cheque a sua pasta de spam.
       updated: A sua conta foi alterada com sucesso.
     sessions:
-      already_signed_out: Sessão fechada.
+      already_signed_out: Sessão encerrada.
       signed_in: Sessão iniciada.
-      signed_out: Sessão fechada.
+      signed_out: Sessão encerrada.
     unlocks:
-      send_instructions: Irá receber um email com instruções para desproteger a sua conta dentro de alguns minutos.
-      send_paranoid_instructions: Se a sua conta existe, irá receber um email com instruções a detalhar como a desproteger dentro de alguns minutos.
-      unlocked: A sua conta foi desprotegida. Por favor inicie sessão para continuar.
+      send_instructions: Você receberá uma mensagem com instruções para desbloquear a sua conta em alguns instantes. Por favor, cheque a sua pasta de spam caso não tenha recebido esta mensagem.
+      send_paranoid_instructions: Se a sua conta já existe, você receberá uma mensagem com instruções para desbloquear a sua conta em alguns instantes. Por favor, cheque a sua pasta de spam caso não tenha recebido esta mensagem.
+      unlocked: A sua conta foi desbloqueada com sucesso. Por favor inicie sessão para continuar.
   errors:
     messages:
       already_confirmed: já foi confirmado, por favor tente iniciar sessão
-      confirmation_period_expired: tem de ser confirmado dentro de %{period}, por favor tente outra vez
-      expired: expirou, por favor tente outra vez
+      confirmation_period_expired: precisa ser confirmada em até %{period}, por favor, solicite novo link de confirmação
+      expired: expirou, por favor solicite uma nova
       not_found: não encontrado
-      not_locked: não está protegido
+      not_locked: não está bloqueada
       not_saved:
-        one: '1 erro impediu este %{resource} de ser guardado:'
-        other: "%{count} erros impediram este %{resource} de ser guardado:"
+        one: '1 erro impediu este %{resource} de ser salvo(a):'
+        other: "%{count} erros impediram este %{resource} de ser salvo(a):"
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index c38839b9a..e627653f1 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -57,5 +57,5 @@ zh-TW:
       not_found: 找不到
       not_locked: 並未被鎖定
       not_saved:
-        one: '1 個錯誤使 %{resource} 無法被儲存︰'
+        one: 1 個錯誤使 %{resource} 無法被儲存︰
         other: "%{count} 個錯誤使 %{resource} 無法被儲存︰"
diff --git a/config/locales/doorkeeper.ar.yml b/config/locales/doorkeeper.ar.yml
index cd4a9cb50..7980e107a 100644
--- a/config/locales/doorkeeper.ar.yml
+++ b/config/locales/doorkeeper.ar.yml
@@ -57,7 +57,7 @@ ar:
         prompt: طلبَ تطبيق %{client_name} تصريحا لاستعمال حسابك.
         title: إذن بالتصريح
       show:
-        title: رمز الترخيص
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: إبطال التصريح
diff --git a/config/locales/doorkeeper.bg.yml b/config/locales/doorkeeper.bg.yml
index 6fafdfc55..24de4aee0 100644
--- a/config/locales/doorkeeper.bg.yml
+++ b/config/locales/doorkeeper.bg.yml
@@ -57,7 +57,7 @@ bg:
         prompt: Приложението %{client_name} заявява достъп до твоя акаунт
         title: Изисква се упълномощаване
       show:
-        title: Код за упълномощаване
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Отмяна
diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml
index ef937c4e6..38dbbdde9 100644
--- a/config/locales/doorkeeper.ca.yml
+++ b/config/locales/doorkeeper.ca.yml
@@ -57,7 +57,7 @@ ca:
         prompt: La aplicació %{client_name} sol⋅licita tenir accés al teu compte
         title: Es requereix autorizació
       show:
-        title: Codi de autorització
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Revocar
diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml
index b37ba1dbe..1588e4f9e 100644
--- a/config/locales/doorkeeper.de.yml
+++ b/config/locales/doorkeeper.de.yml
@@ -57,7 +57,7 @@ de:
         prompt: Soll %{client_name} für die Benutzung dieses Accounts autorisiert werden?
         title: Autorisierung erforderlich
       show:
-        title: Autorisierungscode
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Ungültig machen
@@ -77,7 +77,7 @@ de:
         invalid_grant: Die bereitgestellte Autorisierung ist inkorrekt, abgelaufen, widerrufen, ist mit einem anderen Client verknüpft oder der Redirection URI stimmt nicht mit der Autorisierungs-Anfrage überein.
         invalid_redirect_uri: Der Redirect-URI in der Anfrage ist ungültig.
         invalid_request: Die Anfrage enthält einen nicht-unterstützten Parameter, ein Parameter fehlt oder sie ist anderweitig fehlerhaft.
-        invalid_resource_owner: Die angegebenen Zugangsdaten für den "Resource Owner" sind inkorrekt oder dieser Benutzer existiert nicht.
+        invalid_resource_owner: Die angegebenen Zugangsdaten für den "Resource Owner" sind inkorrekt oder dieses Profil existiert nicht.
         invalid_scope: Der angeforderte Scope ist inkorrekt, unbekannt oder fehlerhaft.
         invalid_token:
           expired: Der Zugriffstoken ist abgelaufen
@@ -108,6 +108,6 @@ de:
       application:
         title: OAuth-Autorisierung nötig
     scopes:
-      follow: Nutzer folgen, blocken, entblocken und entfolgen
+      follow: Profil folgen, blocken, entblocken und entfolgen
       read: deine Daten lesen
       write: Beiträge von deinem Konto aus veröffentlichen
diff --git a/config/locales/doorkeeper.en.yml b/config/locales/doorkeeper.en.yml
index 6412b8b48..33d544bed 100644
--- a/config/locales/doorkeeper.en.yml
+++ b/config/locales/doorkeeper.en.yml
@@ -3,8 +3,10 @@ en:
   activerecord:
     attributes:
       doorkeeper/application:
-        name: Name
+        name: Application name
         redirect_uri: Redirect URI
+        scopes: Scopes
+        website: Application website
     errors:
       models:
         doorkeeper/application:
@@ -33,18 +35,22 @@ en:
         redirect_uri: Use one line per URI
         scopes: Separate scopes with spaces. Leave blank to use the default scopes.
       index:
+        application: Application
         callback_url: Callback URL
+        delete: Delete
         name: Name
-        new: New Application
+        new: New application
+        scopes: Scopes
+        show: Show
         title: Your applications
       new:
-        title: New Application
+        title: New application
       show:
         actions: Actions
-        application_id: Application Id
-        callback_urls: Callback urls
+        application_id: Client key
+        callback_urls: Callback URLs
         scopes: Scopes
-        secret: Secret
+        secret: Client secret
         title: 'Application: %{name}'
     authorizations:
       buttons:
@@ -57,7 +63,7 @@ en:
         prompt: Application %{client_name} requests access to your account
         title: Authorization required
       show:
-        title: Authorization code
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Revoke
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
index 33cc7cc19..ce39f3bd1 100644
--- a/config/locales/doorkeeper.eo.yml
+++ b/config/locales/doorkeeper.eo.yml
@@ -57,7 +57,7 @@ eo:
         prompt: La aplikaĵo %{client_name} petas aliron al via konto
         title: Rajtigo bezonata
       show:
-        title: Rajtiga kodo
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Malrajtigi
diff --git a/config/locales/doorkeeper.es.yml b/config/locales/doorkeeper.es.yml
index f3efb2301..ca6e620d8 100644
--- a/config/locales/doorkeeper.es.yml
+++ b/config/locales/doorkeeper.es.yml
@@ -5,6 +5,8 @@ es:
       doorkeeper/application:
         name: Nombre
         redirect_uri: URI para redirección
+        scopes: Ámbitos
+        website: Sitio web
     errors:
       models:
         doorkeeper/application:
@@ -23,26 +25,30 @@ es:
         edit: Editar
         submit: Enviar
       confirmations:
-        destroy: ¿Está seguro?
+        destroy: "¿Está seguro?"
       edit:
         title: Editar aplicación
       form:
-        error: ¡Uuups! Compruebe su formulario
+        error: "¡Uuups! Compruebe su formulario"
       help:
         native_redirect_uri: Utilice %{native_redirect_uri} para pruebas locales
         redirect_uri: Utilice una línea por URI
         scopes: Separe los ámbitos con espacios. Déjelo en blanco para utilizar los ámbitos por defecto.
       index:
+        application: Aplicación
         callback_url: Callback URL
+        delete: Eliminar
         name: Nombre
         new: Nueva aplicación
+        scopes: Ámbitos
+        show: Mostrar
         title: Sus aplicaciones
       new:
         title: Nueva aplicación
       show:
         actions: Acciones
         application_id: Id de la aplicación
-        callback_urls: Callback urls
+        callback_urls: Callback URLs
         scopes: Ámbitos
         secret: Secreto
         title: 'Aplicación: %{name}'
@@ -57,16 +63,17 @@ es:
         prompt: La aplicación %{client_name} solicita tener acceso a su cuenta
         title: Se requiere autorización
       show:
-        title: Código de autorización
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Revocar
       confirmations:
-        revoke: ¿Está seguro?
+        revoke: "¿Está seguro?"
       index:
         application: Aplicación
         created_at: Creado el
         date_format: "%A-%m-%d %H:%M:%S"
+        scopes: Ámbitos
         title: Sus aplicaciones autorizadas
     errors:
       messages:
diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml
index 33f453a3f..6a4be575e 100644
--- a/config/locales/doorkeeper.fa.yml
+++ b/config/locales/doorkeeper.fa.yml
@@ -3,8 +3,10 @@ fa:
   activerecord:
     attributes:
       doorkeeper/application:
-        name: Name
+        name: Application name
         redirect_uri: Redirect URI
+        scopes: Scopes
+        website: Application website
     errors:
       models:
         doorkeeper/application:
@@ -33,18 +35,22 @@ fa:
         redirect_uri: Use one line per URI
         scopes: Separate scopes with spaces. Leave blank to use the default scopes.
       index:
+        application: Application
         callback_url: Callback URL
+        delete: Delete
         name: Name
-        new: New Application
+        new: New application
+        scopes: Scopes
+        show: Show
         title: Your applications
       new:
-        title: New Application
+        title: New application
       show:
         actions: Actions
-        application_id: Application Id
-        callback_urls: Callback urls
+        application_id: Client key
+        callback_urls: Callback URLs
         scopes: Scopes
-        secret: Secret
+        secret: Client secret
         title: 'Application: %{name}'
     authorizations:
       buttons:
@@ -57,7 +63,7 @@ fa:
         prompt: Application %{client_name} requests access to your account
         title: Authorization required
       show:
-        title: Authorization code
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Revoke
diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
index cd1a9d058..44aceec4c 100644
--- a/config/locales/doorkeeper.fi.yml
+++ b/config/locales/doorkeeper.fi.yml
@@ -57,7 +57,7 @@ fi:
         prompt: Applikaatio %{client_name} pyytää lupaa tilillesi
         title: Valtuutus vaaditaan
       show:
-        title: Valtuutus koodi
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Evää
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index 0e74532c1..3398b248d 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -1,28 +1,14 @@
 ---
 fr:
-  activemodel:
-    errors:
-      models:
-        remote_follow:
-          attributes:
-            acct:
-              blank: Le nom d’utilisateur ne doit pas être vide
   activerecord:
     attributes:
       doorkeeper/application:
         name: Nom
         redirect_uri: L’URL de redirection
+        scope: Portée
+        website: Site Web de l'application
     errors:
-      messages:
-        record_invalid: Données invalides
       models:
-        account:
-          attributes:
-            note:
-              too_long: Description trop longue
-            username:
-              blank: Identifiant vide
-              taken: Identifiant déjà pris
         doorkeeper/application:
           attributes:
             redirect_uri:
@@ -30,17 +16,6 @@ fr:
               invalid_uri: doit être une URL valide.
               relative_uri: doit être une URL absolue.
               secured_uri: doit être une URL HTTP/SSL.
-        user:
-          attributes:
-            email:
-              blank: Courriel vide
-              invalid: Courriel invalide
-              taken: Courriel pris
-            password:
-              blank: Mot de passe vide
-              too_short: Mot de passe trop court
-            password_confirmation:
-              confirmation: Le mot de passe ne correspond pas
   doorkeeper:
     applications:
       buttons:
@@ -84,7 +59,7 @@ fr:
         prompt: Autoriser %{client_name} à utiliser votre compte ?
         title: Autorisation requise
       show:
-        title: Code d’autorisation
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Annuler
diff --git a/config/locales/doorkeeper.he.yml b/config/locales/doorkeeper.he.yml
index 778902788..78e72a56f 100644
--- a/config/locales/doorkeeper.he.yml
+++ b/config/locales/doorkeeper.he.yml
@@ -1,5 +1,5 @@
 ---
-he :
+he:
   activerecord:
     attributes:
       doorkeeper/application:
@@ -57,7 +57,7 @@ he :
         prompt: ישום %{client_name} מבקש גישה לחשבונך
         title: נדרשת הרשאה
       show:
-        title: קוד הרשאה
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: ביטול
@@ -72,7 +72,7 @@ he :
     errors:
       messages:
         access_denied: בעלי המשאב או שרת ההרשאה דחו את הבקשה.
-        credential_flow_not_configured: 'התהליך "Resource Owner Password Credentials" נכשל בשל חוסר בתצורת Doorkeeper.configure.resource_owner_from_credentials.'
+        credential_flow_not_configured: התהליך "Resource Owner Password Credentials" נכשל בשל חוסר בתצורת Doorkeeper.configure.resource_owner_from_credentials.
         invalid_client: הרשאת הלקוח נכשלה עקב לקוח שאינו ידוע, חוסר בהרשאת לקוח או שיטת הרשאה שאינה נתמכת.
         invalid_grant: חוזה ההרשאה המצורף אינו חוקי, אינו תקף, מבוטל, או שאינו מתאים לקישורית ההפניה שבשימוש על ידי בקשת ההרשאה, או שהופק על ידי לקוח אחר.
         invalid_redirect_uri: קישורית ההפניה המצורפת אינה חוקית.
diff --git a/config/locales/doorkeeper.hr.yml b/config/locales/doorkeeper.hr.yml
index 26d21c10d..e0240938e 100644
--- a/config/locales/doorkeeper.hr.yml
+++ b/config/locales/doorkeeper.hr.yml
@@ -57,7 +57,7 @@ hr:
         prompt: Aplikacija %{client_name} je zatražila pristup tvom računu
         title: Traži se autorizacija
       show:
-        title: Autorizacijski kod
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Odbij
diff --git a/config/locales/doorkeeper.hu.yml b/config/locales/doorkeeper.hu.yml
index b1c6dd6c9..54e732f0c 100644
--- a/config/locales/doorkeeper.hu.yml
+++ b/config/locales/doorkeeper.hu.yml
@@ -57,7 +57,7 @@ hu:
         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: Engedély kódja
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Visszavonás
@@ -84,7 +84,7 @@ hu:
           unknown: Hozzáférési kulcs érvénytelen
         resource_owner_authenticator_not_configured: Erőforrás tulajdonos keresés megszakadt, ugyanis a Doorkeeper.configure.resource_owner_authenticator beállítatlan.
         server_error: Hitelesítő szervert váratlan esemény érte, mely meggátolta a kérés teljesítését.
-        temporarily_unavailable: A hitelesítő szerver jelenleg nem tudja teljesíteni a kérést egy átmeneti túlterheltség vagy a kiszolgáló karbantartása miatt. 
+        temporarily_unavailable: A hitelesítő szerver jelenleg nem tudja teljesíteni a kérést egy átmeneti túlterheltség vagy a kiszolgáló karbantartása miatt.
         unauthorized_client: A kliens nincs feljogosítva a kérés teljesítésére.
         unsupported_grant_type: A hitelesítés módja nem támogatott a hitelesítő kiszolgálón.
         unsupported_response_type: A hitelesítő kiszolgáló nem támogatja ezt a választ.
diff --git a/config/locales/doorkeeper.id.yml b/config/locales/doorkeeper.id.yml
index 4ae97c5df..95560ecf9 100644
--- a/config/locales/doorkeeper.id.yml
+++ b/config/locales/doorkeeper.id.yml
@@ -57,7 +57,7 @@ id:
         prompt: Aplikasi %{client_name} meminta akses pada akun anda
         title: Izin diperlukan
       show:
-        title: Kode izin
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Cabut izin
diff --git a/config/locales/doorkeeper.io.yml b/config/locales/doorkeeper.io.yml
index 8c093a9d8..28466d3ae 100644
--- a/config/locales/doorkeeper.io.yml
+++ b/config/locales/doorkeeper.io.yml
@@ -57,7 +57,7 @@ io:
         prompt: Application %{client_name} requests access to your account
         title: Authorization required
       show:
-        title: Authorization code
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Revoke
diff --git a/config/locales/doorkeeper.it.yml b/config/locales/doorkeeper.it.yml
index 4b5e463b0..e5a2d3f6e 100644
--- a/config/locales/doorkeeper.it.yml
+++ b/config/locales/doorkeeper.it.yml
@@ -57,7 +57,7 @@ it:
         prompt: L'applicazione %{client_name} richiede l'accesso al tuo account
         title: Autorizzazione richiesta
       show:
-        title: Codice autorizzazione
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Disabilita
diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml
index d3ea93789..1f145eaa3 100644
--- a/config/locales/doorkeeper.ja.yml
+++ b/config/locales/doorkeeper.ja.yml
@@ -3,8 +3,10 @@ ja:
   activerecord:
     attributes:
       doorkeeper/application:
-        name: 名前
+        name: アプリの名前
         redirect_uri: リダイレクトURI
+        scopes: アクセス権
+        website: アプリのウェブサイト
     errors:
       models:
         doorkeeper/application:
@@ -23,28 +25,32 @@ ja:
         edit: 編集
         submit: 送信
       confirmations:
-        destroy: 本当に削除しますか?
+        destroy: 本当に削除しますか?
       edit:
         title: アプリの編集
       form:
         error: フォームにエラーが無いか確認してください。
       help:
         native_redirect_uri: ローカルテストに %{native_redirect_uri} を使用
-        redirect_uri: 一行に一つのURLを入力してください
+        redirect_uri: 一行に一つのURLを入力してください。
         scopes: アクセス権は半角スペースで区切ることができます。 空白のままにするとデフォルトを使用します。
       index:
+        application: アプリ
         callback_url: コールバックURL
+        delete: 削除
         name: 名前
         new: 新規アプリ
+        scopes: アクセス権
+        show: 見る
         title: アプリ
       new:
         title: 新規アプリ
       show:
         actions: アクション
-        application_id: アクションId
-        callback_urls: コールバックurl
+        application_id: クライアントキー
+        callback_urls: コールバックURL
         scopes: アクセス権
-        secret: 非公開
+        secret: クライアントシークレット
         title: 'アプリ: %{name}'
     authorizations:
       buttons:
@@ -57,7 +63,7 @@ ja:
         prompt: アプリ %{client_name} があなたのアカウントへのアクセスを要求しています。
         title: 認証が必要です。
       show:
-        title: 認証コード
+        title: 認証コードをコピーしてアプリに貼り付けて下さい。
     authorized_applications:
       buttons:
         revoke: 取消
diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml
index 77cf2503b..f97aa8111 100644
--- a/config/locales/doorkeeper.nl.yml
+++ b/config/locales/doorkeeper.nl.yml
@@ -3,9 +3,10 @@ nl:
   activerecord:
     attributes:
       doorkeeper/application:
-        name: Naam
+        name: Naam toepassing
         redirect_uri: Redirect-URI
-        scopes: Scopes
+        scopes: Toestemmingen
+        website: Website toepassing
     errors:
       models:
         doorkeeper/application:
@@ -26,27 +27,31 @@ nl:
       confirmations:
         destroy: Weet je het zeker?
       edit:
-        title: Applicatie bewerken
+        title: Toepassing bewerken
       form:
         error: Oops! Controleer het formulier op fouten
       help:
         native_redirect_uri: Gebruik %{native_redirect_uri} voor lokale tests
         redirect_uri: 'Gebruik één regel per URI. '
-        scopes: Scopes met spaties van elkaar scheiden. Laat leeg om de standaardscopes te gebruiken.
+        scopes: Toestemmingen met spaties van elkaar scheiden. Laat leeg om de standaardtoestemmingen te gebruiken.
       index:
+        application: Toepassing
         callback_url: Callback-URL
+        delete: Verwijderen
         name: Naam
-        new: Nieuwe applicatie
-        title: Jouw applicaties
+        new: Nieuwe toepassing
+        scopes: Toestemmingen
+        show: Tonen
+        title: Jouw toepassingen
       new:
-        title: Nieuwe applicatie
+        title: Nieuwe toepassing
       show:
         actions: Acties
-        application_id: Applicatie-ID
+        application_id: Client-key
         callback_urls: Callback-URL's
-        scopes: Scopes
-        secret: Secret
-        title: 'Applicatie: %{name}'
+        scopes: Toestemmingen
+        secret: Client-secret
+        title: 'Toepassing: %{name}'
     authorizations:
       buttons:
         authorize: Autoriseren
@@ -54,21 +59,21 @@ nl:
       error:
         title: Er is een fout opgetreden
       new:
-        able_to: Deze applicatie zal in staat zijn om
+        able_to: Deze toepassing zal in staat zijn om
         prompt: "%{client_name} autoriseren om uw account te gebruiken?"
         title: Autorisatie vereist
       show:
-        title: Autorisatie-code
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Intrekken
       confirmations:
         revoke: Weet je het zeker?
       index:
-        application: Applicatie
+        application: Toepassing
         created_at: Aangemaakt op
         date_format: "%d-%m-%Y %H:%M:%S"
-        title: Jouw geautoriseerde applicaties
+        title: Jouw geautoriseerde toepassingen
     errors:
       messages:
         access_denied: De resource-eigenaar of autorisatie-server weigerde het verzoek.
@@ -87,28 +92,28 @@ nl:
         server_error: De autorisatieserver is is een onverwachte situatie tegengekomen die het verzoek verhinderde.
         temporarily_unavailable: De autorisatieserver is momenteel niet in staat het verzoek te behandelen als gevolg van een tijdelijke overbelasting of onderhoud aan de server.
         unauthorized_client: De client is niet bevoegd om dit verzoek op deze manier uit te voeren.
-        unsupported_grant_type: Het type autorisatie wordt niet door de autorisatieserver ondersteund 
+        unsupported_grant_type: Het type autorisatie wordt niet door de autorisatieserver ondersteund
         unsupported_response_type: De autorisatieserver ondersteund dit antwoordtype niet
     flash:
       applications:
         create:
-          notice: Applicatie aangemaakt.
+          notice: Toepassing aangemaakt.
         destroy:
-          notice: Applicatie verwijderd.
+          notice: Toepassing verwijderd.
         update:
-          notice: Applicatie bewerkt.
+          notice: Toepassing bewerkt.
       authorized_applications:
         destroy:
-          notice: Applicatie ingetrokken.
+          notice: Toepassing ingetrokken.
     layouts:
       admin:
         nav:
-          applications: Applicaties
+          applications: Toepassingen
           home: Home
           oauth2_provider: OAuth2-provider
       application:
         title: OAuth-autorisatie vereist
     scopes:
-      follow: accounts te volgen, te negeren en te blokkeren.
-      read: jouw accountgegevens te lezen
-      write: namens jou berichten te plaatsen
+      follow: accounts volgen, negeren en blokkeren
+      read: berichten lezen
+      write: berichten plaatsen
diff --git a/config/locales/doorkeeper.no.yml b/config/locales/doorkeeper.no.yml
index 23ca61d4d..ba061e0ca 100644
--- a/config/locales/doorkeeper.no.yml
+++ b/config/locales/doorkeeper.no.yml
@@ -57,7 +57,7 @@
         prompt: Applikasjon %{client_name} spør om tilgang til din konto
         title: Autorisasjon påkrevd
       show:
-        title: Autoriserings kode
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Opphev
diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml
index 9f5d3fe55..1ec1b69e8 100644
--- a/config/locales/doorkeeper.oc.yml
+++ b/config/locales/doorkeeper.oc.yml
@@ -5,6 +5,8 @@ oc:
       doorkeeper/application:
         name: Nom
         redirect_uri: URL de redireccion
+        scopes: Encastres
+        website: Site de l’aplicacion
     errors:
       models:
         doorkeeper/application:
@@ -23,19 +25,23 @@ oc:
         edit: Modificar
         submit: Mandar
       confirmations:
-        destroy: Sètz segur ?
+        destroy: Sètz segur ?
       edit:
         title: Modificar l’aplicacion
       form:
-        error: Ops ! Verificatz vòstre formulari
+        error: Ops ! Verificatz vòstre formulari
       help:
         native_redirect_uri: Emplegatz %{native_redirect_uri} per d’ensages locales
         redirect_uri: Utilizatz una linha per URI
         scopes: Separatz los encastres amb d’espacis. Daissatz void per utilizar l’encastre per defaut.
       index:
+        application: Aplicacion
         callback_url: URL de rapèl
+        delete: Suprimir
         name: Nom
         new: Nòva aplicacion
+        scopes: Encastres
+        show: Veire
         title: Vòstras aplicacions
       new:
         title: Nòva aplicacion
@@ -45,7 +51,7 @@ oc:
         callback_urls: urls de rapèls
         scopes: Encastres
         secret: Secret
-        title: 'Aplicacion : %{name}'
+        title: Aplicacion : %{name}
     authorizations:
       buttons:
         authorize: Autorizar
@@ -57,16 +63,16 @@ oc:
         prompt: L’aplicacion %{client_name} demanda l’accès al vòstre compte.
         title: Cal l’autorizacion
       show:
-        title: Còdi d’autorizacion
+        title: Copiatz lo còdi d’autorizacion e pegatz-lo dins l’aplicacion.
     authorized_applications:
       buttons:
         revoke: Revocar
       confirmations:
-        revoke: Ne sètz segur ?
+        revoke: Ne sètz segur ?
       index:
         application: Aplicacion
-        created_at: Creada lo
-        date_format: "%d-%m-%Y %Ho%M %S"
+        created_at: Creacion
+        date_format: "%-d %b. de %Y %Ho%M %S"
         scopes: Encastres
         title: Las vòstras aplicacions autorizadas
     errors:
diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml
index 8103c4561..fa4324e4d 100644
--- a/config/locales/doorkeeper.pl.yml
+++ b/config/locales/doorkeeper.pl.yml
@@ -3,8 +3,10 @@ pl:
   activerecord:
     attributes:
       doorkeeper/application:
-        name: Nazwa
+        name: Nazwa aplikacji
         redirect_uri: URI przekierowania
+        scopes: Zakres
+        website: Strona aplikacji
     errors:
       models:
         doorkeeper/application:
@@ -31,11 +33,15 @@ pl:
       help:
         native_redirect_uri: Użyj %{native_redirect_uri} do lokalnych testów
         redirect_uri: Jeden adres na linię tekstu
-        scopes: Rozdziel zakresy (scopes) spacjami. Zostaw puste aby użyć domyślnych zakresów.
+        scopes: Rozdziel zakresy (scopes) spacjami. Zostaw puste, aby użyć domyślnych zakresów.
       index:
+        application: Aplikacja
         callback_url: URL wywołania zwrotnego (callback)
+        delete: Usuń
         name: Nazwa
         new: Nowa aplikacja
+        scopes: Zakres
+        show: Pokaż
         title: Twoje aplikacje
       new:
         title: Nowa aplikacja
@@ -57,7 +63,7 @@ pl:
         prompt: Aplikacja %{client_name} prosi o dostęp do Twojego konta
         title: Wymagana jest autoryzacja
       show:
-        title: Kod autoryzacji
+        title: Skopiuj kod uwierzytelniający i wklej go w aplikacji.
     authorized_applications:
       buttons:
         revoke: Unieważnij
@@ -72,7 +78,7 @@ pl:
     errors:
       messages:
         access_denied: Właściciel zasobu lub serwer autoryzujący odrzuciły żądanie.
-        credential_flow_not_configured: Ścieżka "Resource Owner Password Credentials" zakończyła się błędem, ponieważ Doorkeeper.configure.resource_owner_from_credentials nie jest skonfigurowany.
+        credential_flow_not_configured: Ścieżka "Resource Owner Password Credentials" zakończyła się błędem, ponieważ Doorkeeper.configure.resource_owner_from_credentials nie został skonfigurowany.
         invalid_client: Autoryzacja klienta nie powiodła się z powodu nieznanego klienta, braku uwierzytelnienia klienta, lub niewspieranej metody uwierzytelniania.
         invalid_grant: Grant uwierzytelnienia jest niepoprawny, przeterminowany, unieważniony, nie pasuje do URI przekierowwania użytego w żądaniu uwierzytelnienia, lub został wystawiony przez innego klienta.
         invalid_redirect_uri: URI przekierowania jest nieprawidłowy.
@@ -83,8 +89,8 @@ pl:
           expired: Token dostępowy wygasł
           revoked: Token dostępowy został unieważniony
           unknown: Token dostępowy jest błędny
-        resource_owner_authenticator_not_configured: Wyszukiwanie właściciela zasobu nie powiodło się, ponieważ Doorkeeper.configure.resource_owner_authenticator jest nieskonfigurowany.
-        server_error: Serwer uwierzytelniający napotkał niespodziewane warunki, które uniemożliwiły obsłużenie żądania.
+        resource_owner_authenticator_not_configured: Wyszukiwanie właściciela zasobu nie powiodło się, ponieważ Doorkeeper.configure.resource_owner_authenticator nie został skonfigurowany.
+        server_error: Serwer uwierzytelniający napotkał nieoczekiwand warunki, które uniemożliwiły obsłużenie żądania.
         temporarily_unavailable: Serwer uwierzytelniający nie jest obecnie w stanie obsłużyć żądania z powodu tymczasowego przeciążenia lub prac konserwacyjnych.
         unauthorized_client: Klient nie jest uprawniony do wykonania tego żądania przy pomocy tej metody.
         unsupported_grant_type: Ten typ grantu uwierzytelniającego nie jest wspierany przez serwer uwierzytelniający.
@@ -92,14 +98,14 @@ pl:
     flash:
       applications:
         create:
-          notice: Aplikacja utworzona.
+          notice: Utworzono aplikację.
         destroy:
-          notice: Aplikacja usunięta.
+          notice: Usunięto aplikację.
         update:
-          notice: Aplikacja zaktualizowana.
+          notice: Zaktualizowano aplikację.
       authorized_applications:
         destroy:
-          notice: Aplikacja unieważniona.
+          notice: Unieważniono aplikację.
     layouts:
       admin:
         nav:
@@ -110,4 +116,4 @@ pl:
     scopes:
       follow: śledzenie, blokowanie, usuwanie blokady, anulowanie śledzenia kont
       read: dostęp do odczytu danych konta
-      write: publikowanie postów w Twoim imieniu
+      write: publikowanie wpisów w Twoim imieniu
diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml
index 85ea3bfcc..53cadec38 100644
--- a/config/locales/doorkeeper.pt-BR.yml
+++ b/config/locales/doorkeeper.pt-BR.yml
@@ -3,17 +3,19 @@ pt-BR:
   activerecord:
     attributes:
       doorkeeper/application:
-        name: Nome
-        redirect_uri: Redirect URI
+        name: Nome do aplicativo
+        redirect_uri: URI de redirecionamento
+        scopes: Autorizações
+        website: Website do aplicativo
     errors:
       models:
         doorkeeper/application:
           attributes:
             redirect_uri:
               fragment_present: não pode conter um fragmento.
-              invalid_uri: tem de ser um URI válido.
-              relative_uri: tem de ser um URI absoluto.
-              secured_uri: tem de ser um HTTPS/SSL URI.
+              invalid_uri: precisa ser uma URI válida.
+              relative_uri: precisa ser uma URI absoluta.
+              secured_uri: precisa ser uma URI HTTPS/SSL.
   doorkeeper:
     applications:
       buttons:
@@ -21,92 +23,97 @@ pt-BR:
         cancel: Cancelar
         destroy: Destruir
         edit: Editar
-        submit: Submeter
+        submit: Enviar
       confirmations:
-        destroy: Tem a certeza?
+        destroy: Você tem certeza?
       edit:
-        title: Editar aplicação
+        title: Editar aplicativo
       form:
-        error: Oops! Verifique que o formulário não tem erros
+        error: Oops! Verifique o seu formulário para saber de possíveis erros
       help:
         native_redirect_uri: Use %{native_redirect_uri} para testes locais
-        redirect_uri: Utilize uma linha por URI
-        scopes: Separate scopes with spaces. Leave blank to use the default scopes.
+        redirect_uri: Use uma linha para cada URI
+        scopes: Separe autorizações com espaços. Deixe em branco para usar autorizações padrões.
       index:
-        callback_url: Callback URL
+        application: Aplicativos
+        callback_url: URL de retorno
+        delete: Excluir
         name: Nome
-        new: Nova Aplicação
-        title: As suas aplicações
+        new: Novo aplicativo
+        scopes: Autorizações
+        show: Mostrar
+        title: Seus aplicativos
       new:
-        title: Nova aplicação
+        title: Novos aplicativos
       show:
         actions: Ações
-        application_id: Id de Aplicação
-        callback_urls: Callback urls
-        scopes: Scopes
-        secret: Segredo
-        title: 'Aplicação: %{name}'
+        application_id: Chave do cliente
+        callback_urls: URLs de retorno
+        scopes: Autorizações
+        secret: Segredo do cliente
+        title: 'Application: %{name}'
     authorizations:
       buttons:
-        authorize: Autorize
-        deny: Não autorize
+        authorize: Autorizar
+        deny: Negar
       error:
         title: Ocorreu um erro
       new:
-        able_to: Vai poder
-        prompt: Aplicação %{client_name} requisita acesso à sua conta
-        title: Autorização é necessária
+        able_to: Será capaz de
+        prompt: O aplicativo %{client_name} solicita acesso à sua conta
+        title: Autorização necessária
       show:
-        title: Código de autorização
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Revogar
       confirmations:
-        revoke: Tem a certeza?
+        revoke: Você tem certeza?
       index:
-        application: Aplicação
-        created_at: Criada em
-        date_format: "%Y-%m-%d %H:%M:%S"
-        title: As suas aplicações autorizadas
+        application: Aplicativos
+        created_at: Autorizados
+        date_format: "%d-%m-%Y %H:%M:%S"
+        scopes: Autorizações
+        title: Aplicativos autorizados
     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.
+        access_denied: O proprietário ou servidor de autorização negou a solicitação.
+        credential_flow_not_configured: Cadeira de Credenciais de Senha do Proprietário falhou porque Doorkeeper.configure.resource_owner_from_credentials não foram configuradas.
+        invalid_client: Autenticação do cliente falhou por causa de um cliente desconhecido, nenhum cliente de autenticação incluído ou método de autenticação não suportado.
+        invalid_grant: A garantia de autorização é inválida, expirou, foi revogada, não é equivalente à URI de redirecionamento usada da solicitação de autorização ou foi emitida por outro cliente.
+        invalid_redirect_uri: A URI de redirecionamento incluída não é válida.
+        invalid_request: A solicitação não possui um parâmetro obrigatório, inclui um valor não suportado ou está mal formatada.
+        invalid_resource_owner: As credenciais do proprietário não são válidas ou o proprietário não pôde ser encontrado.
+        invalid_scope: A autorização requirida é inválida, desconhecida ou está mal formatada.
         invalid_token:
           expired: O token de acesso expirou
           revoked: O token de acesso foi revogado
           unknown: O token de acesso é inválido
-        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.
+        resource_owner_authenticator_not_configured: Procura pelo proprietário falhou porque Doorkeeper.configure.resource_owner_authenticator não foi configurado.
+        server_error: O servidor de autorização encontrou uma condição inesperada que preveniu a solicitação de ser respondida.
+        temporarily_unavailable: O servidor de autorização é incapaz de lidar com a solicitação no momento por causa d múltiplas requisições ou manutenção programada.
+        unauthorized_client: O cliente não possui autorização para performar esta solicitação usando este método.
+        unsupported_grant_type: O tipo de garantia de autorização não é suportada pelo servidor de autorização.
+        unsupported_response_type: O servidor de autorização não suporta este tipo de resposta.
     flash:
       applications:
         create:
-          notice: Aplicação criada.
+          notice: Aplicativo criado.
         destroy:
-          notice: Aplicação eliminada.
+          notice: Aplicativo deletado.
         update:
-          notice: Aplicação alterada.
+          notice: Aplicativo atualizado.
       authorized_applications:
         destroy:
-          notice: Aplicação revogada.
+          notice: Aplicativo revogado.
     layouts:
       admin:
         nav:
-          applications: Aplicações
-          oauth2_provider: OAuth2 Provider
+          applications: Aplicativo
+          oauth2_provider: Provedor de OAuth2
       application:
-        title: Autorização OAuth necessária
+        title: Autorização OAuth obrigatória
     scopes:
-      follow: siga, bloqueie, desbloqueie, e deixe de seguir contas
-      read: tenha acesso aos dados da sua conta
-      write: públique por si
+      follow: seguir, bloquear, desbloquear e deixar de seguir outras contas
+      read: ler os dados da sua conta
+      write: postar em seu nome
diff --git a/config/locales/doorkeeper.pt.yml b/config/locales/doorkeeper.pt.yml
index 87e01ba94..30d9f7f5a 100644
--- a/config/locales/doorkeeper.pt.yml
+++ b/config/locales/doorkeeper.pt.yml
@@ -57,7 +57,7 @@ pt:
         prompt: Aplicação %{client_name} pede acesso à tua conta
         title: Autorização é necessária
       show:
-        title: Código de autorização
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Revogar
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index 8862936dc..2234a9bbe 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -57,7 +57,7 @@ ru:
         prompt: Приложение %{client_name} запрашивает доступ к Вашему аккаунту
         title: Требуется авторизация
       show:
-        title: Код авторизации
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Отозвать авторизацию
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index 29673971b..60edae1e4 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -57,7 +57,7 @@ th:
         prompt: Application %{client_name} requests access to your account
         title: Authorization required
       show:
-        title: Authorization code
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: ยกเลิกการอนุญาติ
diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml
index a5289541b..d80abf01a 100644
--- a/config/locales/doorkeeper.uk.yml
+++ b/config/locales/doorkeeper.uk.yml
@@ -57,7 +57,7 @@ uk:
         prompt: Податок %{client_name} просить доступу до вашого акаунту
         title: Необхідна авторизація
       show:
-        title: Код авторизації
+        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 6db8697b8..12b38b81f 100644
--- a/config/locales/doorkeeper.zh-CN.yml
+++ b/config/locales/doorkeeper.zh-CN.yml
@@ -58,7 +58,7 @@ zh-CN:
         prompt: 授权 %{client_name} 使用你的帐号?
         title: 需要你授权
       show:
-        title: 授权码
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: 注销
diff --git a/config/locales/doorkeeper.zh-HK.yml b/config/locales/doorkeeper.zh-HK.yml
index bb44c272b..c8edc2b72 100644
--- a/config/locales/doorkeeper.zh-HK.yml
+++ b/config/locales/doorkeeper.zh-HK.yml
@@ -57,7 +57,7 @@ zh-HK:
         prompt: 應用程式 %{client_name} 要求得到你用戶的部份權限
         title: 需要用戶授權
       show:
-        title: 授權代碼
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: 取消授權
@@ -72,12 +72,9 @@ zh-HK:
     errors:
       messages:
         access_denied: 資源擁有者或授權伺服器不接受請求。
-        credential_flow_not_configured: 資源擁有者密碼認證程序 (Resource Owner Password Credentials
-          flow) 失敗,原因是 Doorkeeper.configure.resource_owner_from_credentials 沒有設定。
-        invalid_client: 用戶程式認證 (Client authentication) 失敗,原因是用戶程式未有登記、沒有指定用戶程式 (client)、或者使用了不支援的認證方法
-          (method)。
-        invalid_grant: 授權申請 (authorization grant) 不正確、過期、已被取消,或者無法對應授權請求 (authorization
-          request) 內的轉接 URI,或者屬於別的用戶程式。
+        credential_flow_not_configured: 資源擁有者密碼認證程序 (Resource Owner Password Credentials flow) 失敗,原因是 Doorkeeper.configure.resource_owner_from_credentials 沒有設定。
+        invalid_client: 用戶程式認證 (Client authentication) 失敗,原因是用戶程式未有登記、沒有指定用戶程式 (client)、或者使用了不支援的認證方法 (method)。
+        invalid_grant: 授權申請 (authorization grant) 不正確、過期、已被取消,或者無法對應授權請求 (authorization request) 內的轉接 URI,或者屬於別的用戶程式。
         invalid_redirect_uri: 不正確的轉接網址。
         invalid_request: 請求缺少了必要的參數、包含了不支援的參數、或者其他輸入錯誤。
         invalid_resource_owner: 資源擁有者的登入資訊錯誤、或者無法找到該資源擁有者。
@@ -86,8 +83,7 @@ zh-HK:
           expired: access token 已經過期
           revoked: access token 已被取消
           unknown: access token 不正確
-        resource_owner_authenticator_not_configured: 無法找到資源擁有者,原因是 Doorkeeper.configure.resource_owner_authenticator
-          沒有設定。
+        resource_owner_authenticator_not_configured: 無法找到資源擁有者,原因是 Doorkeeper.configure.resource_owner_authenticator 沒有設定。
         server_error: 認證伺服器遇上未知狀況,令請求無法通過。
         temporarily_unavailable: 認證伺服器由於臨時負荷過重或者維護,目前未能處理請求。
         unauthorized_client: 用戶程式無權用此方法 (method) 請行這個請求。
diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml
index 7e8c78cd9..01e62df73 100644
--- a/config/locales/doorkeeper.zh-TW.yml
+++ b/config/locales/doorkeeper.zh-TW.yml
@@ -10,7 +10,7 @@ zh-TW:
         doorkeeper/application:
           attributes:
             redirect_uri:
-              fragment_present: 'URI 不可包含 "#fragment" 部份'
+              fragment_present: URI 不可包含 "#fragment" 部份
               invalid_uri: 必需有正確的 URI.
               relative_uri: 必需為絕對 URI.
               secured_uri: 必需使用有 HTTPS/SSL 加密的 URI.
@@ -45,7 +45,7 @@ zh-TW:
         callback_urls: 回傳網址
         scopes: 權限範圍
         secret: 密碼
-        title: '應用程式︰ %{name}'
+        title: 應用程式︰ %{name}
     authorizations:
       buttons:
         authorize: 允許
@@ -57,7 +57,7 @@ zh-TW:
         prompt: 應用程式 %{client_name} 要求取得您帳號的部份權限
         title: 需要授權
       show:
-        title: 授權代碼
+        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: 取消授權
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 90b4fe82b..f87d8532c 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -37,12 +37,16 @@ en:
     follow: Follow
     followers: Followers
     following: Following
+    media: Media
     nothing_here: There is nothing here!
     people_followed_by: People whom %{name} follows
     people_who_follow: People who follow %{name}
-    posts: Posts
+    posts: Toots
+    posts_with_replies: Toots with replies
     remote_follow: Remote follow
     reserved_username: The username is reserved
+    roles:
+      admin: Admin
     unfollow: Unfollow
   admin:
     accounts:
@@ -56,7 +60,9 @@ en:
       email: E-mail
       feed_url: Feed URL
       followers: Followers
+      followers_url: Followers URL
       follows: Follows
+      inbox_url: Inbox URL
       ip: IP
       location:
         all: All
@@ -76,8 +82,10 @@ en:
         alphabetic: Alphabetic
         most_recent: Most recent
         title: Order
+      outbox_url: Outbox URL
       perform_full_suspension: Perform full suspension
       profile_url: Profile URL
+      protocol: Protocol
       public: Public
       push_subscription_expires: PuSH subscription expires
       redownload: Refresh avatar
@@ -86,6 +94,7 @@ en:
       resubscribe: Resubscribe
       salmon_url: Salmon URL
       search: Search
+      shared_inbox_url: Shared Inbox URL
       show:
         created_reports: Reports created by this account
         report: report
@@ -99,6 +108,18 @@ en:
       unsubscribe: Unsubscribe
       username: Username
       web: Web
+    custom_emojis:
+      created_msg: Emoji successfully created!
+      delete: Delete
+      destroyed_msg: Emojo successfully destroyed!
+      emoji: Emoji
+      image_hint: PNG up to 50KB
+      new:
+        title: Add new custom emoji
+      shortcode: Shortcode
+      shortcode_hint: At least 2 characters, only alphanumeric characters and underscores
+      title: Custom emojis
+      upload: Upload
     domain_blocks:
       add_new: Add new
       created_msg: Domain block is now being processed
@@ -134,6 +155,8 @@ en:
     instances:
       account_count: Known accounts
       domain_name: Domain
+      reset: Reset
+      search: Search
       title: Known Instances
     reports:
       action_taken_by: Action taken by
@@ -160,6 +183,9 @@ en:
       unresolved: Unresolved
       view: View
     settings:
+      bootstrap_timeline_accounts:
+        desc_html: Separate multiple usernames by comma. Only local and unlocked accounts will work. Default when empty is all local admins.
+        title: Default follows for new users
       contact_information:
         email: Business e-mail
         username: Contact username
@@ -183,6 +209,9 @@ en:
         desc_html: You can write your own privacy policy, terms of service or other legalese. You can use HTML tags
         title: Custom terms of service
       site_title: Instance name
+      thumbnail:
+        desc_html: Used for previews via OpenGraph and API. 1200x630px recommended
+        title: Instance thumbnail
       timeline_preview:
         desc_html: Display public timeline on landing page
         title: Timeline preview
@@ -215,12 +244,18 @@ en:
       body: "%{reporter} has reported %{target}"
       subject: New report for %{instance} (#%{id})
   application_mailer:
-    salutation: '%{name},'
+    salutation: "%{name},"
     settings: 'Change e-mail preferences: %{link}'
     signature: Mastodon notifications from %{instance}
     view: 'View:'
   applications:
+    created: Application successfully created
+    destroyed: Application successfully deleted
     invalid_url: The provided URL is invalid
+    regenerate_token: Regenerate access token
+    token_regenerated: Access token successfully regenerated
+    warning: Be very careful with this data. Never share it with anyone!
+    your_token: Your access token
   auth:
     agreement_html: By signing up you agree to <a href="%{rules_path}">our terms of service</a> and <a href="%{terms_path}">privacy policy</a>.
     change_password: Security
@@ -228,6 +263,7 @@ en:
     delete_account_html: If you wish to delete your account, you can <a href="%{path}">proceed here</a>. You will be asked for confirmation.
     didnt_get_confirmation: Didn't receive confirmation instructions?
     forgot_password: Forgot your password?
+    invalid_reset_password_token: Password reset token is invalid or expired. Please request a new one.
     login: Log in
     logout: Logout
     register: Sign up
@@ -243,7 +279,6 @@ en:
       close: Or, you can just close this window.
       return: Return to the user's profile
       web: Go to web
-    prompt_html: 'You (<strong>%{self}</strong>) have requested to follow:'
     title: Follow %{acct}
   datetime:
     distance_in_words:
@@ -275,7 +310,10 @@ en:
       content: Security verification failed. Are you blocking cookies?
       title: Security verification failed
     '429': Throttled
-    noscript: To use the Mastodon web application, please enable JavaScript. Alternatively, find a native app for Mastodon for your platform.
+    '500':
+      content: We're sorry, but something went wrong on our end.
+      title: This page is not correct
+    noscript_html: To use the Mastodon web application, please enable JavaScript. Alternatively, try one of the <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">native apps</a> for Mastodon for your platform.
   exports:
     blocks: You block
     csv: CSV
@@ -340,6 +378,17 @@ en:
     reblog:
       body: 'Your status was boosted by %{name}:'
       subject: "%{name} boosted your status"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Next
     prev: Prev
@@ -358,9 +407,6 @@ en:
       title: "%{name} mentioned you"
     reblog:
       title: "%{name} boosted your status"
-    subscribed:
-      body: You can now receive push notifications.
-      title: Subscription registered!
   remote_follow:
     acct: Enter your username@domain you want to follow from
     missing_resource: Could not find the required redirect URL for your account
@@ -409,6 +455,7 @@ en:
     authorized_apps: Authorized apps
     back: Back to Mastodon
     delete: Account deletion
+    development: Development
     edit_profile: Edit profile
     export: Data export
     followers: Authorized followers
@@ -416,9 +463,15 @@ en:
     preferences: Preferences
     settings: Settings
     two_factor_authentication: Two-factor Authentication
+    your_apps: Your applications
   statuses:
     open_in_web: Open in web
     over_character_limit: character limit of %{max} exceeded
+    pin_errors:
+      limit: Too many toots pinned
+      ownership: Someone else's toot cannot be pinned
+      private: Non-public toot cannot be pinned
+      reblog: A boost cannot be pinned
     show_more: Show more
     visibilities:
       private: Followers-only
@@ -429,6 +482,7 @@ en:
       unlisted_long: Everyone can see, but not listed on public timelines
   stream_entries:
     click_to_show: Click to show
+    pinned: Pinned toot
     reblogged: boosted
     sensitive_content: Sensitive content
   terms:
@@ -501,6 +555,8 @@ en:
 
       <p>Originally adapted from the <a href="https://github.com/discourse/discourse">Discourse privacy policy</a>.</p>
     title: "%{instance} Terms of Service and Privacy Policy"
+  themes:
+    default: Mastodon
   time:
     formats:
       default: "%b %d, %Y, %H:%M"
@@ -523,3 +579,4 @@ en:
   users:
     invalid_email: The e-mail address is invalid
     invalid_otp_token: Invalid two-factor code
+    signed_in_as: 'Signed in as:'
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 6673b6516..21def0c5f 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -42,7 +42,6 @@ eo:
   authorize_follow:
     error: Bedaŭrinde, okazis eraro provante konsulti la foran konton
     follow: Sekvi
-    prompt_html: 'Vi (<strong>%{self}</strong>) petis sekvi:'
     title: Sekvi %{acct}
   datetime:
     distance_in_words:
@@ -104,6 +103,17 @@ eo:
     reblog:
       body: "%{name} diskonigis vian mesaĝon:"
       subject: "%{name} diskonigis vian mesaĝon"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Sekva
     prev: Malsekva
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 89e2828d0..ca3bdd983 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -5,35 +5,251 @@ es:
     about_this: Acerca de esta instancia
     closed_registrations: Los registros están actualmente cerrados en esta instancia.
     contact: Contacto
+    contact_missing: No especificado
+    contact_unavailable: N/A
     description_headline: "¿Qué es %{domain}?"
     domain_count_after: otras instancias
     domain_count_before: Conectado a
+    extended_description_html: |
+      <h3>Un buen lugar para las reglas</h3>
+      <p>La descripción extendida no se ha colocado aún.</p>
+    features:
+      humane_approach_body: Aprendiendo de los errores de otras redes, Mastodon apunta a las decisiones de diseño ético para combatir el desuso de las redes sociales.
+      humane_approach_title: Una misión más humana
+      not_a_product_body: Mastodon no es una red comercial. Nada de publicidad, nada de minado de datos, nada de jardines murados. No hay ninguna autoridad central.
+      not_a_product_title: Eres una persona, no un producto
+      real_conversation_body: Con 500 caracteres a tu disposición y soporte para contenido granular y advertencias de contenido, puedes expresarte como quieras.
+      real_conversation_title: Hecho para verdaderas conversaciones
+      within_reach_body: Aplicaciones múltiples para iOS, Android, y otras plataformas gracias a un ecosistema de APIs amigable al desarrollador para permitirte estar con tus amigos donde sea.
+      within_reach_title: Always within reach
+    find_another_instance: Busca otra instancia
+    generic_description: "%{domain} es un servidor en la red"
+    hosted_on: Mastodon hosteado en %{domain}
+    learn_more: Aprende más
     other_instances: Otras instancias
     source_code: Código fuente
     status_count_after: estados
-    status_count_before: Que han escrito
+    status_count_before: Qué han escrito
     user_count_after: usuarios registrados
     user_count_before: Tenemos
+    what_is_mastodon: "¿Qué es Mastodon?"
   accounts:
     follow: Seguir
     followers: Seguidores
     following: Siguiendo
+    media: Media
     nothing_here: "¡No hay nada aquí!"
     people_followed_by: Usuarios a quien %{name} sigue
     people_who_follow: Usuarios que siguen a %{name}
     posts: Toots
+    posts_with_replies: Toots con respuestas
     remote_follow: Seguir
+    reserved_username: El nombre de usuario está reservado
+    roles:
+      admin: Administrador
     unfollow: Dejar de seguir
+  admin:
+    accounts:
+      are_you_sure: "¿Estás seguro?"
+      confirm: Confirmar
+      confirmed: Confirmado
+      disable_two_factor_authentication: Desactivar autenticación de dos factores
+      display_name: Nombre
+      domain: Dominio
+      edit: Editar
+      email: E-mail
+      feed_url: URL de notificaciones
+      followers: Seguidores
+      followers_url: URL de los seguidores
+      follows: Sigue
+      inbox_url: URL de la bandeja de entrada
+      ip: IP
+      location:
+        all: Todos
+        local: Local
+        remote: Remoto
+        title: Localización
+      media_attachments: Multimedia
+      moderation:
+        all: Todos
+        silenced: Silenciados
+        suspended: Suspendidos
+        title: Moderación
+      most_recent_activity: Actividad más reciente
+      most_recent_ip: IP más reciente
+      not_subscribed: No se está suscrito
+      order:
+        alphabetic: Alfabético
+        most_recent: Más reciente
+        title: Orden
+      outbox_url: URL de bandeja de salida
+      perform_full_suspension: Performar suspensión completa
+      profile_url: URL del perfil
+      protocol: Protocolo
+      public: Público
+      push_subscription_expires: Expiración de la suscripción PuSH
+      redownload: Refrescar avatar
+      reset: Reiniciar
+      reset_password: Reiniciar contraseña
+      resubscribe: Re-suscribir
+      salmon_url: URL de salmón
+      search: Buscar
+      shared_inbox_url: URL de bandeja compartida
+      show:
+        created_reports: Reportes hechos por esta cuenta
+        report: reportar
+        targeted_reports: Reportes hechos sobre esta cuenta
+      silence: Silenciar
+      statuses: Estados
+      subscribe: Suscribir
+      title: Cuentas
+      undo_silenced: Des-silenciar
+      undo_suspension: Des-suspender
+      unsubscribe: Desuscribir
+      username: Nombre de usuario
+      web: Web
+    domain_blocks:
+      add_new: Añadir nuevo
+      created_msg: El bloque de dominio está siendo procesado
+      destroyed_msg: El bloque de dominio se deshizo
+      domain: Dominio
+      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.
+        severity:
+          desc_html: "<strong>Silenciar</strong> hará los posts de la cuenta invisibles a cualquiera que no lo esté siguiendo. <strong>Suspender</strong> eliminará todo el contenido, media, y datos del perfil. Usa <strong>Ninguno</strong> si solo quieres rechazar archivos multimedia."
+          noop: Ninguno
+          silence: Silenciar
+          suspend: Suspender
+        title: Nuevo bloque de dominio
+      reject_media: Rechazar archivos multimedia
+      reject_media_hint: Remueve localmente archivos multimedia almacenados para descargar cualquiera en el futuro. Irrelevante para suspensiones
+      severities:
+        noop: Ninguno
+        silence: Silenciar
+        suspend: Suspender
+      severity: Severidad
+      show:
+        affected_accounts:
+          one: Una cuenta en la base de datos afectada
+          other: "%{count} cuentas en la base de datos afectadas"
+        retroactive:
+          silence: Des-silenciar todas las cuentas existentes de este dominio
+          suspend: Des-suspender todas las cuentas existentes de este dominio
+        title: Deshacer bloque de dominio para %{domain}
+        undo: Deshacer
+      title: Bloques de Dominio
+      undo: Deshacer
+    instances:
+      account_count: Cuentas conocidas
+      domain_name: Dominio
+      reset: Reiniciar
+      search: Buscar
+      title: Instancias conocidas
+    reports:
+      action_taken_by: Acción tomada por
+      are_you_sure: "¿Estás seguro?"
+      comment:
+        label: Comentario
+        none: Ninguno
+      delete: Eliminar
+      id: ID
+      mark_as_resolved: Marcar como resuelto
+      nsfw:
+        'false': Mostrar multimedia
+        'true': Ocultar multimedia
+      report: 'Reportar #%{id}'
+      report_contents: Contenido
+      reported_account: Cuenta reportada
+      reported_by: Reportado por
+      resolved: Resuelto
+      silence_account: Silenciar cuenta
+      status: Estado
+      suspend_account: Suspender cuenta
+      target: Objetivo
+      title: Reportes
+      unresolved: No resuelto
+      view: Ver
+    settings:
+      bootstrap_timeline_accounts:
+        desc_html: Separa nombres de usuarios múltiples con coma. Solo funcionará con cuentas desbloqueadas. Si está vacío, el predeterminado son todos los administradores locales
+        title: Seguimientos predeterminados para usuarios nuevos
+      contact_information:
+        email: Correo de trabajo
+        username: Nombre de usuario
+      registrations:
+        closed_message:
+          desc_html: Se muestra en la portada cuando los registros están cerrados. Puedes usar tags HTML
+          title: Mensaje de registro cerrado
+        deletion:
+          desc_html: Permite a cualquiera a eliminar su cuenta
+          title: Eliminación de cuenta abierta
+        open:
+          desc_html: Permite a cualquiera a registrar una cuenta
+          title: Registro abierto
+      site_description:
+        desc_html: Párrafo introductorio en la portada y en meta tags. Puedes usar tags HTML, en particular <code>&lt;a&gt;</code> y <code>&lt;em&gt;</code>.
+        title: Descripción de instancia
+      site_description_extended:
+        desc_html: Un buen lugar para tu código de conducta, reglas, guías y otras cosas que estén impuestas aparte en tu instancia. Puedes usar tags HTML
+        title: Información extendida personalizada
+      site_terms:
+        desc_html: Puedes escribir tus propias políticas de privacidad, términos de servicio u otras legalidades. Puedes usar tags HTML
+        title: Términos de servicio personalizados
+      site_title: Nombre de instancia
+      thumbnail:
+        desc_html: Se usa para muestras con OpenGraph y APIs. Se recomienda 1200x630px
+        title: Portada de instancia
+      timeline_preview:
+        desc_html: Mostrar línea de tiempo pública en la portada
+        title: Previsualización
+      title: Ajustes del sitio
+    statuses:
+      back_to_account: Volver a la cuenta
+      batch:
+        delete: Eliminar
+        nsfw_off: NSFW OFF
+        nsfw_on: NSFW ON
+      execute: Ejecutar
+      failed_to_execute: Falló al ejecutar
+      media:
+        hide: Ocultar multimedia
+        show: Mostrar multimedia
+        title: Multimedia
+      no_media: No hay multimedia
+      title: Estado de las cuentas
+      with_media: Con multimedia
+    subscriptions:
+      callback_url: URL del callback
+      confirmed: Confirmado
+      expires_in: Expira en
+      last_delivery: Última entrega
+      title: WebSub
+      topic: Tópico
+    title: Administración
+  admin_mailer:
+    new_report:
+      body: "%{reporter} ha reportado a %{target}"
+      subject: Nuevo reporte para la %{instance} (#%{id})
   application_mailer:
     settings: 'Cambiar preferencias de correo: %{link}'
     signature: Notificaciones de Mastodon desde %{instance}
     view: 'Vista:'
   applications:
+    created: Aplicación creada exitosamente
+    destroyed: Apicación eliminada exitosamente
     invalid_url: La URL proporcionada es incorrecta
+    regenerate_token: Regenerar token de acceso
+    token_regenerated: Token de acceso regenerado exitosamente
+    warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie!
+    your_token: Tu token de acceso
   auth:
+    agreement_html: Al registrarte aceptas <a href="%{rules_path}">nuestros y términos y condiciones del servicio</a> y <a href="%{terms_path}">nuestras políticas de privacidda</a>.
     change_password: Cambiar contraseña
+    delete_account_html: Si desea eliminar su cuenta, puede <a href="%{path}">proceder aquí</a>. Será pedido de una confirmación.
     didnt_get_confirmation: "¿No recibió el correo de confirmación?"
     forgot_password: "¿Olvidaste tu contraseña?"
+    invalid_reset_password_token: El token de reinicio de contraseña es inválido o expiró. Por favor pide uno nuevo.
     login: Iniciar sesión
     logout: Cerrar sesión
     register: Registrarse
@@ -43,8 +259,13 @@ es:
   authorize_follow:
     error: Desafortunadamente, ha ocurrido un error buscando la cuenta remota
     follow: Seguir
-    prompt_html: 'Tú (<strong>%{self}</strong>) has solicitado seguir:'
-    title: Seguir %{acct}
+    follow_request: 'Tienes una solicitud de seguimiento de:'
+    following: "¡Éxito! Ahora estás siguiendo a:"
+    post_follow:
+      close: O, puedes simplemente cerrar esta ventana.
+      return: Regresar al perfil del usuario
+      web: Ir al sitio web
+    title: Seguir a %{acct}
   datetime:
     distance_in_words:
       about_x_hours: "%{count}h"
@@ -59,14 +280,43 @@ es:
       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
+    description_html: Esto removerá el contenido de tu cuenta y la desactivará <strong>permanente e irrevesiblemente</strong>. Tu nombre de usuario quedará reservado para prevenir futuros robos de identidad.
+    proceed: Eliminar cuenta
+    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
+  errors:
+    '403': No tienes permiso para acceder a esta página.
+    '404': La página que estabas buscando no existe.
+    '410': La página que estabas buscando no existe más.
+    '422':
+      content: Verificación de seguridad fallida. ¿Estás bloqueando algunas cookies?
+      title: Verificación de seguridad fallida
+    '429': Asfixiado
+    noscript_html: Para usar la aplicación web de Mastodon, por favor activa Javascript. Alternativamente, prueba alguna de las <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">aplicaciones nativas</a> para Mastodon para tu plataforma.
   exports:
     blocks: Personas que has bloqueado
     csv: CSV
     follows: Personas que sigues
     storage: Almacenamiento
+  followers:
+    domain: Dominio
+    explanation_html: Si deseas asegurar la privacidad de tus estados, tienes que cuidarte de quién te sigue. <strong>Tus estados privados son enviados a todas las instancias de tus seguidores</strong>. Puede que desees revisarlas, y remover seguidores si no confías en tu privacidad para ser respetado por el staff o software de esas instancias.
+    followers_count: Número de seguidores
+    lock_link: Bloquear tu cuenta
+    purge: Remover de los seguidores
+    success:
+      one: En el proceso de bloquear suavemente usuarios de un solo dominio...
+      other: En el proceso de bloquear suavemente usuarios de %{count} dominios...
+    true_privacy_html: Por favor ten en cuenta que <strong>la verdadera privacidad se consigue con encriptación de punto a punto</strong>.
+    unlocked_warning_html: Todos pueden seguirte  para ver tus estados privados inmediatamente. %{lock_link} para poder chequear y rechazar seguidores.
+    unlocked_warning_title: Tu cuenta no está bloqueada
   generic:
     changes_saved_msg: "¡Cambios guardados con éxito!"
-    powered_by: powered by %{link}
+    powered_by: gracias a %{link}
     save_changes: Guardar cambios
     validation_errors:
       one: "¡Algo no está bien! Por favor, revisa el error"
@@ -77,9 +327,10 @@ es:
     types:
       blocking: Lista de bloqueados
       following: Lista de seguidos
+      muting: Lista de silenciados
     upload: Cargar
   landing_strip_html: "<strong>%{name}</strong> es un usuario en %{link_to_root_path}. Puedes seguirlo(a) o interactuar con el o ella si tienes una cuenta en cualquier parte del fediverse."
-  landing_strip_signup_html: Si no tienes una, puedes <a href="%{sign_up_path}">registrar aquí</a>.
+  landing_strip_signup_html: Si no tienes una, puedes <a href="%{sign_up_path}">registrarte aquí</a>.
   media_attachments:
     validations:
       images_and_video: No se puede adjuntar un video a un estado que ya contenga imágenes
@@ -89,8 +340,8 @@ es:
       body: 'Un resumen de lo que te perdiste en %{instance} desde tu última visita el %{since}:'
       mention: "%{name} te ha mencionado en:"
       new_followers_summary:
-        one: "¡Hurra!. Alguien más te ha comenzado a seguir"
-        other: "¡Genial!. Te han seguido %{count} nuevas personas"
+        one: "¡Hurra! Alguien más te ha comenzado a seguir"
+        other: "¡Genial! Te han seguido %{count} nuevas personas"
       subject:
         one: "1 nueva notificación desde tu última visita \U0001F418"
         other: "%{count} nuevas notificaciones desde tu última visita \U0001F418"
@@ -109,14 +360,79 @@ es:
     reblog:
       body: "%{name} ha retooteado tu estado"
       subject: "%{name} ha retooteado tu estado"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Próximo
     prev: Anterior
+    truncate: "&hellip;"
+  push_notifications:
+    favourite:
+      title: "%A {name} le gustó tu estado"
+    follow:
+      title: "%{name} te ha empezado a seguir"
+    group:
+      title: "%{count} notificaciones"
+    mention:
+      action_boost: Boost
+      action_expand: Mostrar más
+      action_favourite: Me Gusta
+      title: "%{name} te mencionó"
+    reblog:
+      title: "%{name} boosteó tu estado"
   remote_follow:
     acct: Ingesa el usuario@dominio de la persona que quieres seguir
     missing_resource: No se pudo encontrar la URL de redirección necesaria para su cuenta.
     proceed: Proceder a seguir
     prompt: 'Vas a seguir a:'
+  sessions:
+    activity: Última actividad
+    browser: Navegador
+    browsers:
+      alipay: Alipay
+      blackberry: Blackberry
+      chrome: Chrome
+      edge: Microsoft Edge
+      firefox: Firefox
+      generic: Desconocido
+      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: 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: Revoke
+    revoke_success: Sesión revocada exitosamente
+    title: Sesiones
   settings:
     authorized_apps: Aplicaciones autorizadas
     back: Volver al inicio
@@ -126,26 +442,115 @@ es:
     preferences: Preferencias
     settings: Ajustes
     two_factor_authentication: Autenticación de dos factores
+    your_apps: Tus aplicaciones
   statuses:
     open_in_web: Abrir en web
     over_character_limit: Límite de caracteres de %{max} superado
+    pin_errors:
+      limit: Demasiados toots fijados
+      ownership: El toot de alguien más no puede fijarse
+      private: Los toots no-públicos no pueden fijarse
+      reblog: Un boost no puede fijarse
     show_more: Mostrar más
     visibilities:
       private: Sólo mostrar a seguidores
+      private_long: Solo mostrar a tus seguidores
       public: Público
+      public_long: Todos pueden ver
       unlisted: Público, pero no mostrar en la historia federada
+      unlisted_long: Todos pueden ver, pero no está listado en las líneas de tiempo públicas
   stream_entries:
     click_to_show: Click para mostrar
+    pinned: Toot fijado
     reblogged: retooteado
     sensitive_content: Contenido sensible
+  terms:
+    body_html: |
+      <h2>Políticas de privacidad</h2>
+
+      <h3 id="collect">¿Qué información recolectamos?</h3>
+
+      <p>Recolectamos información tuya cuando te registras en nuestro sitio y adquirimos datos cuando participas en el foro leyendo, escribiendo, y evaluando el contenido compartido aquí.</p>
+
+      <p>Cuando te registras en nuestro sitio, puede que se te pida tu nombre y dirección de correo electrónico. De todas formas, puedes visitar nuestro sitio sin registrarte. Tu dirección de correo electrónico será verificada por un e-mail conteniendo un enlace único. Si ese enlace es visitado, sabemos que tú controlas esa dirección.</p>
+
+      <p>Cuando te registras y posteas, grabamos la IP de la que se origina esa acción. También puede que retengamos logs del servidor, que incluyen la dirección IP de todos los pedidos a nuestro servidor.</p>
+
+      <h3 id="use">¿Para qué usamos tu información?</h3>
+
+      <p>Toda la información que recolectamos de ti puede usarse en una de las siguientes maneras:</p>
+
+      <ul>
+        <li>Para personalizar tu experiencia &mdash; tu información nos ayuda a responder mejor tus necesidades individuales.</li>
+        <li>Para mejorar nuestro sitio &mdash; nos esforzamos continuamente en mejorar nuestras ofertas del sitio basándonos en la información y apoyo que recibimos de ti.</li>
+        <li>Para mejorar el servicio al cliente &mdash; tu información nos ayuda a responder más efectivamente al servicio al cliente y otras necesidades.</li>
+        <li>Para enviar e-mails periódicos &mdash; la dirección de e-mail que provees puede usarse para enviarte información, notificaciones que pides sobre cambios en tópicos o en respuesta a tu nombre de usuario, responder consultas, y/u otros pedidos o preguntas.</li>
+      </ul>
+
+      <h3 id="protect">¿Cómo protegemos tu información?</h3>
+
+      <p>Implementamos una variedad de medidas de seguridad para mantener a salvo tu información personal cuando entras, publicas, o accesas a ella.</p>
+
+      <h3 id="data-retention">¿Cuáles son sus políticas de retención de datos?</h3>
+
+      <p>Haremos un gran esfuerzo en:</p>
+
+      <ul>
+        <li>Retener logs del servidor conteniendo la dirección IP de todos los pedidos a este servidor en no más de 90 días.</li>
+        <li>Retener las direcciones IP asociadas con usuarios registrados y sus posts no más de 5 años.</li>
+      </ul>
+
+      <h3 id="cookies"¿Usamos cookies?</h3>
+
+      <p>Sí. Las cookies son pequeños archivos que un sitio web o su proveedor de servicio transfieren al disco duro de tu computadora a través de tu navegador web (si se le permite). Estas cookies permiten al sitio reconocer tu navegador y, si y tienes una cuenta registrada, asociarlo con ella.</p>
+
+      <p>Usamos cookies para entender y guardar tus preferencias para futuras visitas y agregar datos compilados sobre el tráfico del sitio e interacción para que podamos ofrecer una mejor experiencia y herramientas en el futuro. Puede que contratemos con proveedores de servicio de tercera mano para que nos asistan en el mejor entendimiento de nuestros visitantes del sitio. A estos proveedores de servicio no se les permite usar la información recolectada a nuestras espaldas excepto para ayudarnos a conducir y mejorar nuestro trabajo.</p>
+
+      <h3 id="disclose">¿Revelamos alguna información a terceras manos?</h3>
+
+      <p>No vendemos, intercambiamos, ni de ninguna otra manera transferimos tu información personal identificable a terceras partes. Esto no incluye las terceras manos que nos asisten en operar nuestro sitio, conducción o trabajo, o en servirte, tanto como que éstas acepten en mantener esta información confidencial. Puede que también liberemos tu información cuando creamos que es apropiado para cumplir con la ley, enforzar nuestras políticas del sitio, o proteger la nuestra u otros derechos, propiedad, o seguridad. De todas formas, la información del visitante autorizado no-personal puede proveerse a otras partes por marketing, publicidad, u otros usos.</p>
+
+      <h3 id="third-party">Enlaces de terceras partes</h3>
+
+      <p>Ocasionalmente, a nuestra discreción, puede que incluyamos u ofrezcamos productos de terceras partes o servicios en nuestro sitio. Estas terceras partes tienen políticas de privacidad separadas e independientes. Por lo tanto no tenemos responsabilidad u obligación por el contenido y actividades de estos sitios enlazados. Sin embargo, buscamos proteger la integridad de nuestro sitio y dar la bienvenida a cualquier ayuda sobre estos sitios.</p>
+
+      <h3 id="coppa">Children's Online Privacy Protection Act Compliance (Cumplimiento de la Ley de la Protección Privada en Línea del Niño)</h3>
+
+      <p>Nuestro sitio y todos nuestros productos y servicios están dirigidos a gente que tiene al menos 13 años de edad. Si el servidor está alojado en EE.UU, y tienes menos de 13 años, no uses este sitio por los requerimientos del COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children's Online Privacy Protection Act</a>).</p>
+
+      <h3 id="online">Solo Políticas de Privacidad en Línea</h3>
+
+      <p>Estas políticas de privacidad aplican únicamente a la información recolectada a través de nuestro sitio y no a información recolectada <i>offline</i>.</p>
+
+      <h3 id="consent">Tu Consentimiento</h3>
+
+      <p>Al usar nuestro sitio, estás consentido a nuestras políticas de privacidad del sitio.</p>
+
+      <h3 id="changes">Cambios a nuestras Políticas de Privacidad</h3>
+
+      <p>Si decidimos cambiar nuestras políticas de privacidad, las publicaremos en esta página.</p>
+
+      <p>Este documento está publicado bajo la licencia CC-BY-SA. Última vez actualizado el 31 de Mayo del 2013.</p>
+
+      <p>Adaptado originalmente del <a href="https://github.com/discourse/discourse">discurso de las políticas de privacidad</a>.</p>
+    title: Términos del Servicio y Políticas de Privacidad de %{instance}
   time:
     formats:
-      default: "%b %d, %Y, %H:%M"
+      default: "%d de %b del %Y, %H:%M"
   two_factor_authentication:
-    description_html: Sí 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.
+    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.
     disable: Deshabilitar
     enable: Habilitar
+    enabled_success: Verificación de dos factores activada exitosamente
+    generate_recovery_codes: generar códigos de recuperación
     instructions_html: "<strong>Escanea este código QR desde Google Authenticator o una aplicación similar en su teléfono</strong>. Desde ahora, esta aplicación va a generar tokens que tienes que ingresar cuando quieras iniciar sesión."
+    lost_recovery_codes: Los códigos de recuperación te permiten obtener acceso a tu cuenta si pierdes tu teléfono. Si has perdido tus códigos de recuperación, puedes regenerarlos aquí. Tus viejos códigos de recuperación se harán inválidos.
+    recovery_codes: Hacer copias de seguridad de tus códigos de recuperación
+    recovery_instructions_html: Si pierdes acceso a tu teléfono, puedes usar uno de los siguientes códigos de recuperación para obtener acceso a tu cuenta. <strong>Mantenlos a salvo</strong>. Por ejemplo, puedes imprimirlos y guardarlos con otros documentos importantes.
+    setup: Configurar
+    wrong_code: "¡El código ingresado es inválido! ¿El dispositivo y tiempo del servidor están correctos?"
   users:
     invalid_email: La dirección de correo es incorrecta
     invalid_otp_token: Código de dos factores incorrecto
+    signed_in_as: 'Sesión iniciada como:'
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index eb66a9c41..f7921b1cf 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -2,7 +2,7 @@
 fa:
   about:
     about_mastodon_html: ماستدون (Mastodon) یک شبکهٔ اجتماعی است که بر اساس پروتکل‌های آزاد وب و نرم‌افزارهای آزاد و کدباز ساخته شده است. این شبکه مانند ایمیل غیرمتمرکز است.
-    about_this: درباره.
+    about_this: درباره
     closed_registrations: ثبت‌نام روی این سرور هم‌اینک فعال نیست. اما شما می‌توانید سرور دیگری بیابید و با حسابی که آن‌جا می‌سازید دقیقاً به همین شبکه دسترسی داشته باشید.
     contact: تماس
     contact_missing: تعیین نشده
@@ -20,11 +20,11 @@ fa:
       not_a_product_title: شما یک انسان هستید، نه یک محصول
       real_conversation_body: با ۵۰۰ نویسه برای هر نوشته و با پشتیبانی از هشدارهای موردی برای نوشته‌ها و تصاویر، می‌توانید خود را همان گونه که می‌خواهید ابراز کنید.
       real_conversation_title: برای گفتگوهای واقعی
-      within_reach_body: اپ‌های متنوع برای iOS، اندروید، و سیستم‌های دیگر به خاطر وحود یک اکوسیستم API دوستانه برای برنامه‌نویسان. از همه جا با دوستان خود ارتباط داشته باشید.
+      within_reach_body: اپ‌های متنوع برای iOS، اندروید، و سیستم‌های دیگر به خاطر وجود یک اکوسیستم API دوستانه برای برنامه‌نویسان. از همه جا با دوستان خود ارتباط داشته باشید.
       within_reach_title: همیشه در دسترس
     find_another_instance: یافتن سرورهای دیگر
     generic_description: "%{domain} یک سرور روی شبکه است"
-    hosted_on: ماستدون میزبانی‌شده روی %{domain}
+    hosted_on: ماستدون، میزبانی‌شده روی %{domain}
     learn_more: بیشتر بدانید
     other_instances: فهرست سرورها
     source_code: کدهای منبع
@@ -37,12 +37,16 @@ fa:
     follow: پی بگیرید
     followers: پیگیران
     following: پی می‌گیرد
+    media: عکس و ویدیو
     nothing_here: این‌جا چیزی نیست!
     people_followed_by: کسانی که %{name} پی می‌گیرد
     people_who_follow: کسانی که %{name} را پی می‌گیرند
-    posts: نوشته
+    posts: نوشته‌ها
+    posts_with_replies: نوشته‌ها و پاسخ‌ها
     remote_follow: پیگیری غیرمستقیم
     reserved_username: این نام کاربری در دسترس نیست
+    roles:
+      admin: مدیر
     unfollow: پایان پیگیری
   admin:
     accounts:
@@ -56,7 +60,9 @@ fa:
       email: ایمیل
       feed_url: نشانی فید
       followers: پیگیران
+      followers_url: نشانی پیگیران
       follows: پی می‌گیرد
+      inbox_url: نشانی صندوق ورودی
       ip: IP
       location:
         all: همه
@@ -76,8 +82,10 @@ fa:
         alphabetic: الفبایی
         most_recent: تازه‌ترین‌ها
         title: ترتیب
+      outbox_url: نشانی صندوق خروجی
       perform_full_suspension: انجام تعلیق کامل
       profile_url: نشانی نمایه
+      protocol: پروتکل
       public: عمومی
       push_subscription_expires: عضویت از راه PuSH منقضی شد
       redownload: به‌روزرسانی تصویر نمایه
@@ -86,6 +94,7 @@ fa:
       resubscribe: اشتراک دوباره
       salmon_url: نشانی Salmon
       search: جستجو
+      shared_inbox_url: نشانی صندوق ورودی مشترک
       show:
         created_reports: گزارش‌ها از طرف این حساب
         report: گزارش
@@ -160,6 +169,9 @@ fa:
       unresolved: حل‌نشده
       view: نمایش
     settings:
+      bootstrap_timeline_accounts:
+        desc_html: نام‌های کاربری را با ویرگول از هم جدا کنید. تنها حساب‌های محلی و قفل‌نشده کار می‌کنند. اگر این‌جا را خالی بگذارید، به طور پیش‌فرض همهٔ مدیرهای این سرور پی‌گرفته خواهند شد.
+        title: پیگیری‌های پیش‌فرض برای کاربران تازه
       contact_information:
         email: ایمیل کاری
         username: نام کاربری
@@ -183,6 +195,9 @@ fa:
         desc_html: می‌توانید سیاست رازداری، شرایط استفاده، یا سایر مسائل قانونی را به دلخواه خود بنویسید. تگ‌های HTML هم مجاز است
         title: شرایط استفادهٔ سفارشی
       site_title: نام سرور
+      thumbnail:
+        desc_html: برای دیدن با OpenGraph و رابط برنامه‌نویسی. وضوح پیشنهادی ۱۲۰۰×۶۳۰ پیکسل
+        title: تصویر کوچک فوری
       timeline_preview:
         desc_html: نوشته‌های عمومی این سرور را در صفحهٔ آغازین نشان دهید
         title: پیش‌نمایش نوشته‌ها
@@ -212,15 +227,21 @@ fa:
     title: مدیریت
   admin_mailer:
     new_report:
-      body: "کاربر %{reporter} کاربر %{target} را گزارش داد"
+      body: کاربر %{reporter} کاربر %{target} را گزارش داد
       subject: گزارش تازه‌ای برای %{instance} (#%{id})
   application_mailer:
-    salutation: '%{name},'
+    salutation: "%{name},"
     settings: 'تغییر تنظیمات ایمیل: %{link}'
     signature: اعلان‌های ماستدون از %{instance}
     view: 'نمایش:'
   applications:
+    created: برنامه با موفقیت ساخته شد
+    destroyed: برنامه با موفقیت پاک شد
     invalid_url: نشانی واردشده معتبر نیست
+    regenerate_token: دوباره‌سازی کد دسترسی
+    token_regenerated: کد دسترسی با موفقیت ساخته شد
+    warning: خیلی مواظب این اطلاعات باشید و آن را به هیچ کس ندهید!
+    your_token: کد دسترسی شما
   auth:
     agreement_html: پیش از عضو شدن باید <a href="%{rules_path}">شرایط استفاده</a> و <a href="%{terms_path}">سیاست رازداری</a> ما را بپذیرید.
     change_password: امنیت
@@ -228,6 +249,7 @@ fa:
     delete_account_html: اگر می‌خواهید حساب خود را پاک کنید، از <a href="%{path}">این‌جا</a> پیش بروید. از شما درخواست تأیید خواهد شد.
     didnt_get_confirmation: راهنمایی برای تأیید را دریافت نکردید؟
     forgot_password: رمزتان را گم کرده‌اید؟
+    invalid_reset_password_token: Password reset token is invalid or expired. Please request a new one.
     login: ورود
     logout: خروج
     register: عضو شوید
@@ -243,7 +265,6 @@ fa:
       close: یا این پنجره را ببندید.
       return: به نمایهٔ این کاربر بازگردید
       web: رفتن به وب
-    prompt_html: 'شما (<strong>%{self}</strong>) می‌خواهید این حساب را پی بگیرید:'
     title: پیگیری %{acct}
   datetime:
     distance_in_words:
@@ -275,7 +296,7 @@ fa:
       content: تأیید امنیتی انجام نشد. آیا مرورگر شما کوکی‌ها را مسدود می‌کند؟
       title: تأیید امنیتی شکست خورد
     '429': درخواست‌های بیش از حد
-    noscript: برای استفاده از نسخهٔ تحت وب ماستدون، لطفاً جاوااسکریپت را فعال کنید. یا به جایش می‌توانید یک اپ ماستدون را به‌کار ببرید.
+    noscript_html: برای استفاده از نسخهٔ تحت وب ماستدون، لطفاً جاوااسکریپت را فعال کنید. یا به جایش می‌توانید یک اپ ماستدون را به‌کار ببرید.
   exports:
     blocks: حساب‌های مسدودشده
     csv: CSV
@@ -340,6 +361,17 @@ fa:
     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: قبلی
@@ -358,9 +390,6 @@ fa:
       title: "%{name} از شما نام برد"
     reblog:
       title: "%{name} نوشتهٔ شما را بازبوقید"
-    subscribed:
-      body: از این به بعد سرور می‌تواندبه شما اعلان‌های تازه بفرستد .
-      title: عضویت ثبت شد!
   remote_follow:
     acct: نشانی حساب username@domain خود را این‌جا بنویسید
     missing_resource: نشانی اینترنتی برای رسیدن به حساب شما پیدا نشد
@@ -409,6 +438,7 @@ fa:
     authorized_apps: برنامه‌های مجاز
     back: بازگشت به ماستدون
     delete: پاک‌کردن حساب
+    development: Development
     edit_profile: ویرایش نمایه
     export: برون‌سپاری داده‌ها
     followers: پیگیران مورد تأیید
@@ -416,9 +446,15 @@ fa:
     preferences: ترجیحات
     settings: تنظیمات
     two_factor_authentication: ورود دومرحله‌ای
+    your_apps: برنامهٔ شما
   statuses:
     open_in_web: بازکردن در وب
     over_character_limit: از حد مجاز %{max} حرف فراتر رفتید
+    pin_errors:
+      limit: نوشته‌های ثابت بیش از حد
+      ownership: نوشته‌های دیگران را نمی‌توان ثابت کرد
+      private: نوشته‌های غیرعمومی را نمی‌توان ثابت کرد
+      reblog: بازبوق‌ها را نمی‌توان ثابت کرد
     show_more: نمایش
     visibilities:
       private: خصوصی
@@ -429,11 +465,12 @@ fa:
       unlisted_long: عمومی، ولی در فهرست نوشته‌ها نمایش نمی‌یابد
   stream_entries:
     click_to_show: برای نمایش کلیک کنید
+    pinned: نوشته‌های ثابت
     reblogged: بازبوقید
     sensitive_content: محتوای حساس
   terms:
     body_html: |
-      <h2>Privacy Policy</h2>
+      <h2>سیاست رازداری (Privacy Policy)</h2>
 
       <h3 id="collect">ما چه اطلاعاتی را گردآوری می‌کنیم؟</h3>
 
@@ -451,7 +488,7 @@ fa:
         <li>برای شخصی‌سازی تجربهٔ کاربری شما &mdash; ما به کمک اطلاعات شما بهتر می‌توانیم نیازهای شما را برآورده کنیم.</li>
         <li>برای بهتر کردن سایت &mdash; ما پیوسته می‌کوشیم تا خدمات این سایت را به کمک اطلاعات و بازخوردی که از شما می‌گیریم بهتر کنیم.</li>
         <li>برای بهتر کردن خدمات به کاربران &mdash; ما به کمک اطلاعات شما به طور مؤثرتری می‌توانیم به درخواست‌های پشتیبانی شما پاسخ دهیم.</li>
-        <li>برای فرستادن ایمیل‌های دوره‌ای &mdash; ما گاهی به نشانی ایمیلی که وارد کرده‌اید نامه می‌فرستیم تا درخواست‌های شما پاسخ دهیم یا شما را در جریان پاسخ دیگران به شما قرار دهیم.</li>
+        <li>برای فرستادن ایمیل‌های دوره‌ای &mdash; ما گاهی به نشانی ایمیلی که وارد کرده‌اید نامه می‌فرستیم تا به درخواست‌های شما پاسخ دهیم یا شما را در جریان پاسخ دیگران به شما قرار دهیم.</li>
       </ul>
 
       <h3 id="protect">ما چگونه از اطلاعات شما محافظت می‌کنیم؟</h3>
@@ -500,7 +537,7 @@ fa:
       <p>این نوشته تحت اجازه‌نامهٔ CC-BY-SA قرار دارد. تاریخ آخرین به‌روزرسانی آن ۱۰ خرداد ۱۳۹۲ است.</p>
 
       <p>این نوشته اقتباسی است از <a href="https://github.com/discourse/discourse">سیاست رازداری Discourse</a>.</p>
-    title: "شرایط استفاده و سیاست رازداری %{instance}"
+    title: شرایط استفاده و سیاست رازداری %{instance}
   time:
     formats:
       default: "%d %b %Y, %H:%M"
@@ -523,3 +560,4 @@ fa:
   users:
     invalid_email: نشانی ایمیل نامعتبر است
     invalid_otp_token: کد ورود دومرحله‌ای نامعتبر است
+    signed_in_as: 'واردشده به نام:'
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 23c844741..08ae90447 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -42,7 +42,6 @@ fi:
   authorize_follow:
     error: Valitettavasti tapahtui virhe etätilin haussa.
     follow: Seuraa
-    prompt_html: 'Sinä (<strong>%{self}</strong>) olet pyytänyt lupaa seurata:'
     title: Seuraa %{acct}
   datetime:
     distance_in_words:
@@ -104,6 +103,17 @@ fi:
     reblog:
       body: 'Sinun statustasi boostasi %{name}:'
       subject: "%{name} boostasi statustasi"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Seuraava
     prev: Edellinen
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 7fde60a2b..6198a5454 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -5,9 +5,14 @@ fr:
     about_this: À propos
     closed_registrations: Les inscriptions sont actuellement fermées sur cette instance. Cependant, vous pouvez trouver une autre instance sur laquelle vous créer un compte et à partir de laquelle vous pourrez accéder au même réseau.
     contact: Contact
+    contact_missing: Manquant
+    contact_unavailable: Non disponible
     description_headline: Qu’est-ce que %{domain} ?
     domain_count_after: autres instances
     domain_count_before: Connectés à
+    extended_description_html: |
+      <h3>Un bon endroit pour les règles</h3>
+      <p>La description étendue n'a pas été remplie.</p>
     features:
       humane_approach_body: Ayant appris des échecs d’autres réseaux, Mastodon à l’ambition de combattre l’abus des médias sociaux en effectuant des choix de conception éthiques.
       humane_approach_title: Une approche plus humaine
@@ -23,7 +28,7 @@ fr:
     learn_more: En savoir plus
     other_instances: Liste des instances
     source_code: Code source
-    status_count_after: posts
+    status_count_after: statuts
     status_count_before: Ayant publié
     user_count_after: utilisateur⋅ice⋅s
     user_count_before: Abrite
@@ -32,12 +37,16 @@ fr:
     follow: Suivre
     followers: Abonné⋅es
     following: Abonnements
+    media: Médias
     nothing_here: Rien à voir ici !
     people_followed_by: Personnes suivies par %{name}
     people_who_follow: Personnes qui suivent %{name}
     posts: Statuts
+    posts_with_replies: Statuts & réponses
     remote_follow: Suivre à distance
     reserved_username: Ce nom d’utilisateur⋅ice est réservé
+    roles:
+      admin: Admin
     unfollow: Ne plus suivre
   admin:
     accounts:
@@ -52,6 +61,7 @@ fr:
       feed_url: URL du flux
       followers: Abonné⋅es
       follows: Abonnements
+      inbox_url: URL d'entrée
       ip: Adresse IP
       location:
         all: Tous
@@ -71,8 +81,10 @@ fr:
         alphabetic: Alphabétique
         most_recent: Plus récent
         title: Tri
+      outbox_url: URL de sortie
       perform_full_suspension: Effectuer une suspension complète
       profile_url: URL du profil
+      protocol: Protocole
       public: Public
       push_subscription_expires: Expiration de l’abonnement PuSH
       redownload: Rafraîchir les avatars
@@ -104,12 +116,14 @@ fr:
         hint: Le blocage de domaine n’empêchera pas la création de comptes dans la base de données, mais il appliquera automatiquement et rétrospectivement des méthodes de modération spécifiques sur ces comptes.
         severity:
           desc_html: "<strong>Silence</strong> rendra les messages des comptes concernés invisibles à ceux qui ne les suivent pas. <strong>Suspend</strong> supprimera tout le contenu des comptes concernés, les médias, et les données du profil."
+          noop: Aucune
           silence: Masqué
           suspend: Suspendre
         title: Nouveau blocage de domaine
       reject_media: Fichiers média rejetés
       reject_media_hint: Supprime localement les fichiers média stockés et refuse d’en télécharger ultérieurement. Ne concerne pas les suspensions.
       severities:
+        noop: Aucune
         silence: Masquer
         suspend: Suspendre
       severity: Séverité
@@ -187,7 +201,7 @@ fr:
         nsfw_off: NSFW OFF
         nsfw_on: NSFW ON
       execute: Exécuter
-      failed_to_execute: Erreur d'exécution
+      failed_to_execute: Erreur d’exécution
       media:
         hide: Masquer les médias
         show: Montrer les médias
@@ -212,14 +226,21 @@ fr:
     signature: Notifications de Mastodon depuis %{instance}
     view: 'Voir :'
   applications:
+    created: Application créée avec succès
+    destroyed: Application supprimée avec succès
     invalid_url: L’URL fournie est invalide
+    regenerate_token: Regénérer le jeton d'accès
+    token_regenerated: Jeton d'accès regénéré avec succès
+    warning: Soyez prudent⋅e avec ces données. Ne les partagez pas !
+    your_token: Votre jeton d'accès
   auth:
     agreement_html: En vous inscrivant, vous souscrivez à <a href="%{rules_path}">nos conditions d’utilisation</a> ainsi qu’à <a href="%{terms_path}">notre politique de confidentialité</a>.
     change_password: Sécurité
     delete_account: Supprimer le compte
-    delete_account_html: Si vous désirez supprimer votre compte, vous pouvez cliquer ici. Il vous sera demandé de confirmer cette action.
+    delete_account_html: Si vous désirez supprimer votre compte, vous pouvez <a href="%{path}">cliquer ici</a>. Il vous sera demandé de confirmer cette action.
     didnt_get_confirmation: Vous n’avez pas reçu les consignes de confirmation ?
     forgot_password: Mot de passe oublié ?
+    invalid_reset_password_token: Le lien de réinitialisation du mot de passe est invalide ou a expiré. Merci de réessayer.
     login: Se connecter
     logout: Se déconnecter
     register: S’inscrire
@@ -230,12 +251,11 @@ fr:
     error: Malheureusement, il y a eu une erreur en cherchant les détails du compte distant
     follow: Suivre
     follow_request: 'Vous avez demandé à suivre:'
-    following: 'Youpi! Vous suivez :'
+    following: 'Youpi ! Vous suivez :'
     post_follow:
       close: Ou bien, vous pouvez fermer cette fenêtre.
-      return: Retour au profil de l'utilisateur⋅trice
-      web: Retour à l'interface web
-    prompt_html: 'Vous (<strong>%{self}</strong>) avez demandé à suivre :'
+      return: Retour au profil de l’utilisateur⋅trice
+      web: Retour à l’interface web
     title: Suivre %{acct}
   datetime:
     distance_in_words:
@@ -273,16 +293,16 @@ fr:
       content: Vérification de sécurité échouée. Bloquez-vous les cookies ?
       title: Vérification de sécurité échouée
     '429': Trop de requêtes émises dans un délai donné.
-    noscript: Pour utiliser Mastodon, veuillez activer JavaScript
+    noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript
   exports:
     blocks: Vous bloquez
     csv: CSV
     follows: Vous suivez
-    mutes: Vous faites taire
+    mutes: Vous masquez
     storage: Médias stockés
   followers:
     domain: Domaine
-    explanation_html: Si vous voulez être sûr⋅e que vos status restent privés, vous devez savoir qui vous suit. <strong>Vos status privés seront diffusés à toutes les instances des utilisateur⋅ice⋅s qui vous suivent</strong>. Vous voudrez peut-être les passer en revue et les supprimer si vous n’êtes pas sûr⋅e que votre vie privée sera respectée par l’administration ou le logiciel de ces instances.
+    explanation_html: Si vous voulez être sûr⋅e que vos statuts restent privés, vous devez savoir qui vous suit. <strong>Vos statuts privés seront diffusés à toutes les instances des utilisateur⋅ice⋅s qui vous suivent</strong>. Vous voudrez peut-être les passer en revue et les supprimer si vous n’êtes pas sûr⋅e que votre vie privée sera respectée par l’administration ou le logiciel de ces instances.
     followers_count: Nombre d’abonné⋅es
     lock_link: Rendez votre compte privé
     purge: Retirer de la liste d’abonné⋅es
@@ -290,7 +310,7 @@ fr:
       one: Suppression des abonné⋅es venant d’un domaine en cours…
       other: Suppression des abonné⋅es venant de %{count} domaines en cours…
     true_privacy_html: Soyez conscient⋅es <strong>qu’une vraie confidentialité ne peut être atteinte que par un chiffrement de bout-en-bout</strong>.
-    unlocked_warning_html: N’importe qui peut vous suivre et voir vos status privés. %{lock_link} afin de pouvoir vérifier et rejeter des abonné⋅es.
+    unlocked_warning_html: N’importe qui peut vous suivre et voir vos statuts privés. %{lock_link} afin de pouvoir vérifier et rejeter des abonné⋅es.
     unlocked_warning_title: Votre compte n’est pas privé
   generic:
     changes_saved_msg: Les modifications ont été enregistrées avec succès !
@@ -305,13 +325,13 @@ fr:
     types:
       blocking: Liste d’utilisateur⋅ice⋅s bloqué⋅es
       following: Liste d’utilisateur⋅ice⋅s suivi⋅es
-      muting: Liste d’utilisateur⋅ice⋅s que vous faites taire
+      muting: Liste d’utilisateur⋅ice⋅s que vous masquez
     upload: Importer
   landing_strip_html: <strong>%{name}</strong> utilise %{link_to_root_path}. Vous pouvez le/la suivre et interagir si vous possédez un compte quelque part dans le "fediverse".
   landing_strip_signup_html: Si ce n’est pas le cas, vous pouvez <a href="%{sign_up_path}">en créer un ici</a>.
   media_attachments:
     validations:
-      images_and_video: Impossible de joindre une vidéo à un status contenant déjà des images
+      images_and_video: Impossible de joindre une vidéo à un statut contenant déjà des images
       too_many: Impossible de joindre plus de 4 fichiers
   notification_mailer:
     digest:
@@ -334,30 +354,40 @@ fr:
       subject: 'Abonné⋅es en attente : %{name}'
     mention:
       body: "%{name} vous a mentionné⋅e dans :"
-      subject: "%{name} vous a mentionné"
+      subject: "%{name} vous a mentionné·e"
     reblog:
-      body: "%{name} a partagé votre status :"
-      subject: "%{name} a partagé votre status"
+      body: "%{name} a partagé votre statut :"
+      subject: "%{name} a partagé votre statut"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Suivant
     prev: Précédent
   push_notifications:
     favourite:
-      title: "%{name} à mis votre status en favori"
+      title: "%{name} à mis votre statut en favori"
     follow:
       title: "%{name} vous suit"
+    group:
+      title: "%{count} notifications"
     mention:
       action_boost: Partager
       action_expand: Montrer plus
       action_favourite: Ajouter aux favoris
-      title: "%{name} vous a mentionné"
+      title: "%{name} vous a mentionné·e"
     reblog:
-      title: "%{name} a partagé⋅e votre status"
-    subscribed:
-      body: Vous pouvez désormais recevoir des notifications push.
-      title: Abonnements aux notifications push
+      title: "%{name} a partagé⋅e votre statut"
   remote_follow:
-    acct: Entrez votre pseudo@instance depuis lequel vous voulez suivre ce⋅tte utilisateur⋅trice
+    acct: Entrez votre pseudo@instance depuis lequel vous voulez suivre ce⋅tte utilisateur⋅rice
     missing_resource: L’URL de redirection n’a pas pu être trouvée
     proceed: Continuez pour suivre
     prompt: 'Vous allez suivre :'
@@ -404,6 +434,7 @@ fr:
     authorized_apps: Applications autorisées
     back: Retour vers Mastodon
     delete: Suppression de compte
+    development: Développement
     edit_profile: Modifier le profil
     export: Export de données
     followers: Abonné⋅es autorisé⋅es
@@ -411,24 +442,30 @@ fr:
     preferences: Préférences
     settings: Réglages
     two_factor_authentication: Identification à deux facteurs
+    your_apps: Vos applications
   statuses:
     open_in_web: Ouvrir sur le web
     over_character_limit: limite de caractères dépassée de %{max} caractères
+    pin_errors:
+      ownership: Vous ne pouvez pas épingler un statut ne vous appartenant pas
+      private: Les statuts non-publics ne peuvent pas être épinglés
+      reblog: Un partage ne peut pas être épinglé
     show_more: Afficher plus
     visibilities:
       private: Abonné⋅es uniquement
-      private_long: Seul⋅es vos abonné⋅es verront vos status
+      private_long: Seul⋅es vos abonné⋅es verront vos statuts
       public: Public
-      public_long: Tout le monde peut voir vos status
+      public_long: Tout le monde peut voir vos statuts
       unlisted: Public sans être affiché sur le fil public
-      unlisted_long: Tout le monde peut voir vos status mais ils ne seront pas sur listés sur les fils publics
+      unlisted_long: Tout le monde peut voir vos statuts mais ils ne seront pas sur listés sur les fils publics
   stream_entries:
     click_to_show: Cliquer pour afficher
+    pinned: Statut épinglé
     reblogged: partagé
     sensitive_content: Contenu sensible
   terms:
-    body_html: "<h2>Politique de confidentialité</h2>\n\n<h3 id=\"collect\">Quelles données collectons-nous?</h3>\n\n<p>Nous collectons des données lorsque vous vous enregistrez sur notre site et les récoltons lorsque vous participez dans le forum en lisant, écrivant, et évaluant le contenu partagé ici.</p>\n\n<p>Lors de l'enregistrement sur notre site, il peut vous être demandé de renseigner votre nom et adresse e-mail. Vous pouvez, cependant, visiter notre site sans inscription. Votre adresse e-mail devra être vérifiée grâce à un e-mail contenant un lien unique. Si ce lien est visité, nous savons que vous contrôlez cette adresse e-mail.</p>\n\n<p>Lors de l'inscription et de la publication de statuts, nous enregistrons l'adresse IP de laquelle le(s) status viennent. Nous pouvons également conserver des historiques serveurs qui contiendront l'adresse IP de chaque requête adressée à notre serveur.</p>\n\n<h3 id=\"use\">Que faisons-nous avec vos données?</h3>\n\n<p>Toute information que nous collectons pourra être utilisée d'une des manières suivantes :</p>\n\n<ul>\n  <li>Pour personnaliser votre expérience &mdash; vos données nous aident à mieux répondre à vos besoins individuels.</li>\n  <li>Pour améliorer notre site &mdash; nous faisons tout notre possible pour améliorer notre site en fonction des données, retours et suggestions que nous recevons.</li>\n  <li>Afin d'améliorer le support client &mdash; vos données nous aident à mieux répondre à vos requêtes et demandes de support.</li>\n  <li>Afin d'envoyer des e-mails à intervalles réguliers &mdash; l'adresse e-mail que vous renseignez peut être utilisée pour vous envoyer des données et notifications concernant des changements ou en réponse à votre nom d'utilisateur⋅trice, en réponse à vos demandes et/ou autres requêtes ou questions</li>\n</ul>\n\n<h3 id=\"protect\">Comment protégeons-nous vos données?</h3>\n  \n<p>Nous appliquons une multitude de mesures afin de maintenir la sécurité de vos données personnelles lorsque vous entrez, soumettez, ou accédez à ces dernières.</p>\n\n<h3 id=\"data-retention\">Quelle est notre politique de conservation des données?</h3>\n\n<p>Nous nous efforçons de:</p>\n\n<ul>\n  <li>Ne pas garder les historiques serveurs contenant l'adresse IP de chaque requête adressée à ce serveur plus de 90 jours.</li>\n  <li>Ne pas conserver les adresses IP associées aux utilisateur⋅trices et leur contenu plus de 5 ans.</li>\n</ul>\n\n<h3 id=\"cookies\">Utilisons nous des \"cookies\"?</h3>\n\n<p>Oui. Les cookies sont de petits fichiers qu'un site ou prestataires de services transfèrent sur le disque dur de votre ordinateur par le biais de votre navigateur Web (si ce dernier le permet). Ces cookies permettent au site de reconnaître votre navigateur et, si vous disposez d'un compte, l'associer à votre compte.</p>\n\n<p>Nous utilisons les cookies pour enregistrer vos préférences pour de futures visites, compiler des données agrégées à propos du trafic et des interactions effectuées sur le site afin de proposer une meilleure expérience dans le futur. Nous pouvons contracter les services d'acteurs tiers afin de nous aider à mieux comprendre les visiteurs de notre site. Ces acteurs ont l'autorisation d'utiliser ces données seulement à des fins d'améliorations.</p>\n\n<h3 id=\"disclose\">Divulguons-nous des données à des acteurs tiers ?</h3>\n\n<p>Nous n'échangeons pas, ne vendons pas ni effectuons de quelconques transferts avec des acteurs tiers d'informations permettant de vous identifier personnellement. Cela n'inclut pas les acteurs de confiance qui nous aident à gérer notre entreprise et à vous servir tant que ces acteurs s'accordent à garder lesdites informations confidentielles. Nous pouvons être amenés à délivrer vos informations lorsque jugé adéquat afin de respecter la loi, d'appliquer la politique de notre site, ou afin de protéger nos droits, ceux des autres, notre propriété ou sécurité. Cependant, aucune information permettant l'identification de nos visiteurs ne sera divulguée à des fins publicitaires, commerciales ou tout autre usage.</p>\n\n<h3 id=\"third-party\">Liens vers des acteurs tiers</h3>\n\n<p>Nous pouvons être amenés à inclure ou offrir les services ou produits d'acteurs tiers sur notre site. Ces acteurs tiers possèdent leur propre politique de confidentialité. Nous ne sommes donc pas responsables du contenu ou activités desdits acteurs. Néanmoins, nous cherchons à protéger l'intégrité de notre site et sommes ouverts à toute remarque concernant ces acteurs.</p>\n\n<h3 id=\"coppa\">Children's Online Privacy Protection Act</h3>\n\n<p>Notre site, nos produits et services sont tous dirigés à l'usage de personnes étant âgés de 13 ans ou plus. Si ce serveur est hébergé aux États-Unis et que vous êtes âgé⋅e de moins de 13 ans, au vu du COPPA (<a href=\"https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act\">Children's Online Privacy Protection Act</a>) n'utilisez pas ce site.</p>\n\n<h3 id=\"consent\">Votre consentement</h3>\n\n<p>En utilisant notre site, vous consentez à la politique de confiedentialité de notre site Web.</p>\n\n<h3 id=\"changes\">Changements de notre politique de confidentialité</h3>\n\n<p>Si nous décidons d'apporter des changements à notre politique de confidentialité, nous les mettrons à disposition sur cette page.</p>\n\n<p>Ce document est distribué sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 31 Mai 2013. Il a été traduit en français en Juillet 2017.</p>\n\n<p>Originellement adapté à partir de la politique de confidentialité de <a href=\"https://github.com/discourse/discourse\">Discourse</a></p>.\n"
-    title: "%{instance} Conditions d'utilisations et Politique de confidentialité"
+    body_html: "<h2>Politique de confidentialité</h2>\n\n<h3 id=\"collect\">Quelles données collectons-nous ?</h3>\n\n<p>Nous collectons des données lorsque vous vous enregistrez sur notre site et les récoltons lorsque vous participez dans le forum en lisant, écrivant, et évaluant le contenu partagé ici.</p>\n\n<p>Lors de l’enregistrement sur notre site, il peut vous être demandé de renseigner votre nom et adresse électronique. Vous pouvez, cependant, visiter notre site sans inscription. Votre adresse électronique devra être vérifiée grâce à un courriel contenant un lien unique. Si ce lien est visité, nous savons que vous contrôlez cette adresse.</p>\n\n<p>Lors de l’inscription et de la publication de statuts, nous enregistrons l’adresse IP de laquelle les statuts proviennent. Nous pouvons également conserver des historiques serveurs qui contiendront l’adresse IP de chaque requête adressée à notre serveur.</p>\n\n<h3 id=\"use\">Que faisons-nous avec vos données ?</h3>\n\n<p>Toute information que nous collectons pourra être utilisée d’une des manières suivantes :</p>\n\n<ul>\n  <li>Pour personnaliser votre expérience &mdash; vos données nous aident à mieux répondre à vos besoins individuels.</li>\n  <li>Pour améliorer notre site &mdash; nous faisons tout notre possible pour améliorer notre site en fonction des données, retours et suggestions que nous recevons.</li>\n  <li>Afin d’améliorer le support client &mdash; vos données nous aident à mieux répondre à vos requêtes et demandes de support.</li>\n  <li>Afin d’envoyer des courriels à intervalles réguliers &mdash; l’adresse électronique que vous renseignez peut être utilisée pour vous envoyer des données et notifications concernant des changements ou en réponse à votre nom d’utilisateur⋅trice, en réponse à vos demandes et/ou autres requêtes ou questions</li>\n</ul>\n\n<h3 id=\"protect\">Comment protégeons-nous vos données ?</h3>\n  \n<p>Nous appliquons une multitude de mesures afin de maintenir la sécurité de vos données personnelles lorsque vous entrez, soumettez, ou accédez à ces dernières.</p>\n\n<h3 id=\"data-retention\">Quelle est notre politique de conservation des données ?</h3>\n\n<p>Nous nous efforçons de :</p>\n\n<ul>\n  <li>ne pas garder les historiques serveurs contenant l’adresse IP de chaque requête adressée à ce serveur plus de 90 jours ;</li>\n  <li>ne pas conserver les adresses IP associées aux utilisateur⋅trices et leur contenu plus de 5 ans.</li>\n</ul>\n\n<h3 id=\"cookies\">Utilisons nous des « cookies » ?</h3>\n\n<p>Oui. Les cookies sont de petits fichiers qu’un site ou prestataires de services transfèrent sur le disque dur de votre ordinateur par le biais de votre navigateur Web (si ce dernier le permet). Ces cookies permettent au site de reconnaître votre navigateur et, si vous disposez d’un compte, de l’associer à celui-ci.</p>\n\n<p>Nous utilisons les cookies pour enregistrer vos préférences pour de futures visites, compiler des données agrégées à propos du trafic et des interactions effectuées sur le site afin de proposer une meilleure expérience dans le futur. Nous pouvons contracter les services d’acteurs tiers afin de nous aider à mieux comprendre les visiteurs de notre site. Ces acteurs ont l’autorisation d’utiliser ces données seulement à des fins d’améliorations.</p>\n\n<h3 id=\"disclose\">Divulguons-nous des données à des acteurs tiers ?</h3>\n\n<p>Nous n’échangeons pas, ne vendons pas ni effectuons de quelconques transferts avec des acteurs tiers d’informations permettant de vous identifier personnellement. Cela n’inclut pas les acteurs de confiance qui nous aident à gérer notre entreprise et à vous servir tant que ces acteurs s’accordent à garder lesdites informations confidentielles. Nous pouvons être amenés à délivrer vos informations lorsque jugé adéquat afin de respecter la loi, d’appliquer la politique de notre site, ou afin de protéger nos droits, ceux des autres, notre propriété ou sécurité. Cependant, aucune information permettant l’identification de nos visiteurs ne sera divulguée à des fins publicitaires, commerciales ou tout autre usage.</p>\n\n<h3 id=\"third-party\">Liens vers des acteurs tiers</h3>\n\n<p>Nous pouvons être amenés à inclure ou offrir les services ou produits d’acteurs tiers sur notre site. Ces acteurs tiers possèdent leur propre politique de confidentialité. Nous ne sommes donc pas responsables du contenu ou activités desdits acteurs. Néanmoins, nous cherchons à protéger l’intégrité de notre site et sommes ouverts à toute remarque concernant ces acteurs.</p>\n\n<h3 id=\"coppa\" lang=\"en\">Children's Online Privacy Protection Act</h3>\n\n<p>Notre site, nos produits et services sont tous destinés à l’usage de personnes âgées de 13 ans ou plus. Si ce serveur est hébergé aux États-Unis et que vous êtes âgé⋅e de moins de 13 ans, au vu du COPPA (<a href=\"https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act\"><i lang=\"en\">Children's Online Privacy Protection Act</i></a>) n’utilisez pas ce site.</p>\n\n<h3 id=\"consent\">Votre consentement</h3>\n\n<p>En utilisant notre site, vous consentez à la présente politique de confidentialité.</p>\n\n<h3 id=\"changes\">Changements de notre politique de confidentialité</h3>\n\n<p>Si nous décidons d’apporter des changements à notre politique de confidentialité, nous les publierons sur cette page.</p>\n\n<p>Ce document est distribué sous licence CC-BY-SA. Il a été mis à jour pour la dernière fois le 31 mai 2013. Il a été traduit en français en juillet 2017.</p>\n\n<p>Originellement adapté à partir de la politique de confidentialité de <a href=\"https://github.com/discourse/discourse\">Discourse</a>.</p>\n"
+    title: "%{instance} Conditions d’utilisations et politique de confidentialité"
   time:
     formats:
       default: "%d %b %Y, %H:%M"
@@ -451,3 +488,4 @@ fr:
   users:
     invalid_email: L’adresse courriel est invalide
     invalid_otp_token: Le code d’authentification à deux facteurs est invalide
+    signed_in_as: 'Connecté·e en tant que :'
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 7772e6a76..84d6d8468 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -177,7 +177,6 @@ he:
   authorize_follow:
     error: למרבה הצער, היתה שגיאה בחיפוש החשבון המרוחק
     follow: לעקוב
-    prompt_html: 'בקשת מעקב ממך (<strong>%{self}</strong>) אחרי:'
     title: לעקוב אחרי %{acct}
   datetime:
     distance_in_words:
@@ -265,6 +264,17 @@ 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: הקודם
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 2d43fcad8..581912420 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -43,7 +43,6 @@ hr:
   authorize_follow:
     error: Nažalost, došlo je do greške looking up the remote račun
     follow: Slijedi
-    prompt_html: 'Ti si (<strong>%{self}</strong>) poslao zahtjev za sljeđenje:'
     title: Slijedi %{acct}
   datetime:
     distance_in_words:
@@ -106,6 +105,17 @@ 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
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 53319a673..77551223f 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -45,6 +45,17 @@ hu:
     reblog:
       body: 'Az állapotod reblogolta %{name}:'
       subject: "%{name} reblogolta az állapotod"
+  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ő
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 0d5937cfb..f3a6649d1 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -168,7 +168,6 @@ id:
   authorize_follow:
     error: Sayangnya, ada error saat melihat akun remote
     follow: Ikuti
-    prompt_html: 'Anda (<strong>%{self}</strong>) telah diminta untuk mengikuti:'
     title: Mengikuti %{acct}
   datetime:
     distance_in_words:
@@ -255,6 +254,17 @@ 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
diff --git a/config/locales/io.yml b/config/locales/io.yml
index c9abd5711..4114e5231 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -166,7 +166,6 @@ io:
   authorize_follow:
     error: Regretinde, eventis eraro probante konsultar la fora konto
     follow: Sequar
-    prompt_html: 'Tu (<strong>%{self}</strong>) demandis sequar:'
     title: Sequar %{acct}
   datetime:
     distance_in_words:
@@ -240,6 +239,17 @@ 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
diff --git a/config/locales/it.yml b/config/locales/it.yml
index de9682589..ec0209bc1 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -43,7 +43,6 @@ it:
   authorize_follow:
     error: Sfortunatamente c'è stato un errore nel consultare l'account remoto
     follow: Segui
-    prompt_html: 'Tu, (<strong>%{self}</strong>), hai richiesto di seguire:'
     title: Segui %{acct}
   datetime:
     distance_in_words:
@@ -109,6 +108,17 @@ it:
     reblog:
       body: 'Il tuo status è stato condiviso da %{name}:'
       subject: "%{name} ha condiviso il tuo status"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Avanti
     prev: Indietro
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index fa8f4566c..5ffc09ab9 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -37,16 +37,20 @@ ja:
     follow: フォロー
     followers: フォロワー
     following: フォロー中
+    media: メディア
     nothing_here: 何もありません
     people_followed_by: "%{name} さんがフォロー中のアカウント"
     people_who_follow: "%{name} さんをフォロー中のアカウント"
-    posts: 投稿
+    posts: トゥート
+    posts_with_replies: トゥートと返信
     remote_follow: リモートフォロー
     reserved_username: このユーザー名は予約されています。
+    roles:
+      admin: Admin
     unfollow: フォロー解除
   admin:
     accounts:
-      are_you_sure: 本当に実行しますか?
+      are_you_sure: 本当に実行しますか?
       confirm: 確認
       confirmed: 確認済み
       disable_two_factor_authentication: 二段階認証を無効にする
@@ -56,7 +60,9 @@ ja:
       email: E-mail
       feed_url: フィードURL
       followers: フォロワー数
+      followers_url: Followers URL
       follows: フォロー数
+      inbox_url: Inbox URL
       ip: IP
       location:
         all: すべて
@@ -76,16 +82,19 @@ ja:
         alphabetic: アルファベット順
         most_recent: 直近の活動順
         title: 順序
+      outbox_url: Outbox URL
       perform_full_suspension: 完全に活動停止させる
       profile_url: プロフィールURL
+      protocol: プロトコル
       public: パブリック
-      push_subscription_expires: PuSH購読期限切れ
+      push_subscription_expires: PuSH購読期限
       redownload: アバターの更新
       reset: リセット
       reset_password: パスワード再設定
       resubscribe: 再講読
       salmon_url: Salmon URL
       search: 検索
+      shared_inbox_url: Shared Inbox URL
       show:
         created_reports: このアカウントで作られたレポート
         report: レポート
@@ -99,6 +108,18 @@ ja:
       unsubscribe: 購読の解除
       username: ユーザー名
       web: Web
+    custom_emojis:
+      created_msg: 絵文字の追加に成功しました
+      delete: 削除
+      destroyed_msg: 絵文字の削除に成功しました
+      emoji: 絵文字
+      image_hint: 50KBまでのPNG画像を利用できます。
+      new:
+        title: 新規カスタム絵文字の追加
+      shortcode: ショートコード
+      shortcode_hint: 2文字以上の半角英数字とアンダーバーのみ利用できます。
+      title: カスタム絵文字
+      upload: アップロード
     domain_blocks:
       add_new: 新規追加
       created_msg: ドメインブロック処理を完了しました
@@ -134,6 +155,8 @@ ja:
     instances:
       account_count: 既知のアカウント数
       domain_name: ドメイン名
+      reset: リセット
+      search: 検索
       title: 既知のインスタンス
     reports:
       action_taken_by: レポート処理者
@@ -160,12 +183,15 @@ ja:
       unresolved: 未解決
       view: 表示
     settings:
+      bootstrap_timeline_accounts:
+        desc_html: 複数のユーザー名はコンマで区切ります。ローカルの公開アカウントのみ有効です。指定しない場合は管理者がデフォルトで指定されます。
+        title: 新規ユーザーが自動フォローするアカウント
       contact_information:
         email: ビジネスメールアドレス
         username: 連絡先のユーザー名
       registrations:
         closed_message:
-          desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます
+          desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます。
           title: 新規登録停止時のメッセージ
         deletion:
           desc_html: 誰でも自分のアカウントを削除できるようにします
@@ -177,12 +203,15 @@ ja:
         desc_html: フロントページへの表示と meta タグに使用される紹介文です。HTMLタグ、特に<code>&lt;a&gt;</code> と <code>&lt;em&gt;</code>が使えます。
         title: インスタンスの説明
       site_description_extended:
-        desc_html: あなたのインスタンスにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます
+        desc_html: あなたのインスタンスにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます。
         title: カスタム詳細説明
       site_terms:
-        desc_html: あなたは独自のプライバシーポリシーや利用規約、そのほかの法的根拠を書くことができます。HTMLタグが使えます
+        desc_html: あなたは独自のプライバシーポリシーや利用規約、そのほかの法的根拠を書くことができます。HTMLタグが使えます。
         title: カスタム利用規約
       site_title: インスタンスの名前
+      thumbnail:
+        desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です。
+        title: インスタンスのサムネイル
       timeline_preview:
         desc_html: ランディングページに公開タイムラインを表示します
         title: タイムラインプレビュー
@@ -219,7 +248,13 @@ ja:
     signature: Mastodon %{instance} インスタンスからの通知
     view: 'View:'
   applications:
+    created: アプリが作成されました
+    destroyed: アプリが削除されました
     invalid_url: URLが無効です
+    regenerate_token: アクセストークンの再生成
+    token_regenerated: アクセストークンが再生成されました
+    warning: このデータは気をつけて取り扱ってください。不特定多数の人と共有しないでください!
+    your_token: アクセストークン
   auth:
     agreement_html: 登録すると <a href="%{rules_path}">利用規約</a> と <a href="%{terms_path}">プライバシーポリシー</a> に同意したことになります。
     change_password: セキュリティ
@@ -227,6 +262,7 @@ ja:
     delete_account_html: アカウントを削除したい場合、<a href="%{path}">こちら</a> から手続きが行えます。削除する前に、確認画面があります。
     didnt_get_confirmation: 確認メールを受信できませんか?
     forgot_password: パスワードをお忘れですか?
+    invalid_reset_password_token: パスワードリセットトークンが正しくないか期限切れです。もう一度リクエストしてください。
     login: ログイン
     logout: ログアウト
     register: 登録する
@@ -234,15 +270,14 @@ ja:
     reset_password: パスワードを再発行
     set_new_password: 新しいパスワード
   authorize_follow:
-    error: 残念ながら、リモートアカウントにエラーが発生しました。
+    error: 残念ながら、リモートアカウント情報の取得中にエラーが発生しました。
     follow: フォロー
     follow_request: 'あなたは以下のアカウントにフォローリクエストを送信しました:'
-    following: '成功! あなたは現在以下のアカウントをフォローしています:'
+    following: '成功! あなたは現在以下のアカウントをフォローしています:'
     post_follow:
       close: またはこのウィンドウを閉じます
       return: ユーザーのプロフィールに戻る
       web: Web を開く
-    prompt_html: 'あなた(<strong>%{self}</strong>)は以下のアカウントのフォローをリクエストしました:'
     title: "%{acct} をフォロー"
   datetime:
     distance_in_words:
@@ -267,14 +302,14 @@ ja:
     warning_html: 削除が保証されるのはこのインスタンス上のコンテンツのみです。他のインスタンス等、外部に広く共有されたコンテンツについては痕跡が残ることがあります。また、現在接続できないサーバーや、あなたの更新を受け取らなくなったサーバーに対しては、削除は反映されません。
     warning_title: 共有されたコンテンツについて
   errors:
-    '403': このページを表示する権限がありません
+    '403': このページを表示する権限がありません。
     '404': お探しのページは見つかりませんでした。
     '410': お探しのページはもう存在しません。
     '422':
       content: セキュリティ認証に失敗しました。Cookieをブロックしていませんか?
       title: セキュリティ認証に失敗
     '429': リクエストの制限に達しました。
-    noscript: Mastodonのウェブアプリケーションを利用する場合はJavaScriptを有効にしてください。またはあなたのプラットフォーム向けのMastodonネイティブアプリを探すことができます。
+    noscript_html: Mastodonのウェブアプリケーションを利用する場合はJavaScriptを有効にしてください。またはあなたのプラットフォーム向けの<a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">Mastodonネイティブアプリ</a>を探すことができます。
   exports:
     blocks: ブロック
     csv: CSV
@@ -298,11 +333,11 @@ ja:
     powered_by: powered by %{link}
     save_changes: 変更を保存
     validation_errors:
-      one: エラーが発生しました。以下のエラーを確認してください
-      other: エラーが発生しました。以下の%{count}個のエラーを確認してください
+      one: エラーが発生しました。以下のエラーを確認してください。
+      other: エラーが発生しました。以下の%{count}個のエラーを確認してください。
   imports:
     preface: 他のインスタンスでエクスポートされたファイルから、フォロー/ブロックした情報をこのインスタンス上のアカウントにインポートできます。
-    success: ファイルは正常にアップロードされ、現在処理中です。しばらくしてから確認してください
+    success: ファイルは正常にアップロードされ、現在処理中です。しばらくしてから確認してください。
     types:
       blocking: ブロックしたアカウントリスト
       following: フォロー中のアカウントリスト
@@ -331,7 +366,7 @@ ja:
       body: "%{name} さんにフォローされています"
       subject: "%{name} さんにフォローされています"
     follow_request:
-      body: "%{name} さんがあなたにフォローをリクエストしました。"
+      body: "%{name} さんがあなたにフォローをリクエストしました"
       subject: "%{name} さんからのフォローリクエスト"
     mention:
       body: "%{name} さんから返信がありました:"
@@ -339,6 +374,17 @@ ja:
     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: 前
@@ -357,9 +403,6 @@ ja:
       title: "%{name} さんから返信がありました"
     reblog:
       title: あなたのトゥートが %{name} さんにブーストされました
-    subscribed:
-      body: あなたはプッシュ通知を受け取ることが出来ます
-      title: Subscription が登録されました
   remote_follow:
     acct: あなたの ユーザー名@ドメイン を入力してください
     missing_resource: リダイレクト先が見つかりませんでした
@@ -408,6 +451,7 @@ ja:
     authorized_apps: 認証済みアプリ
     back: Mastodon に戻る
     delete: アカウントの削除
+    development: 開発
     edit_profile: プロフィールを編集
     export: データのエクスポート
     followers: 信頼済みのインスタンス
@@ -415,9 +459,15 @@ ja:
     preferences: ユーザー設定
     settings: 設定
     two_factor_authentication: 二段階認証
+    your_apps: アプリ
   statuses:
     open_in_web: Webで開く
     over_character_limit: 上限は %{max}文字までです
+    pin_errors:
+      limit: 固定されているトゥートが多すぎます
+      ownership: 他人のトゥートを固定することはできません
+      private: 非公開のトゥートを固定することはできません
+      reblog: ブーストされたトゥートを固定することはできません
     show_more: もっと見る
     visibilities:
       private: 非公開
@@ -428,6 +478,7 @@ ja:
       unlisted_long: 誰でも見ることができますが、公開タイムラインには表示されません
   stream_entries:
     click_to_show: クリックして表示
+    pinned: 固定されたトゥート
     reblogged: さんにブーストされました
     sensitive_content: 閲覧注意
   terms:
@@ -500,11 +551,13 @@ ja:
 
       <p>オリジナルの出典 <a href="https://github.com/discourse/discourse">Discourse privacy policy</a>.</p>
     title: "%{instance} 利用規約・プライバシーポリシー"
+  themes:
+    default: Mastodon
   time:
     formats:
       default: "%Y年%m月%d日 %H:%M"
   two_factor_authentication:
-    code_hint: 確認するには認証アプリで表示されたコードを入力してください
+    code_hint: 確認するには認証アプリで表示されたコードを入力してください。
     description_html: "<strong>二段階認証</strong>を有効にするとログイン時、電話でコードを受け取る必要があります。"
     disable: 無効
     enable: 有効
@@ -522,3 +575,4 @@ ja:
   users:
     invalid_email: メールアドレスが無効です
     invalid_otp_token: 二段階認証コードが間違っています
+    signed_in_as: '下記でログイン中:'
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index aae0e62e7..6fdc3b985 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1,29 +1,52 @@
 ---
 ko:
   about:
-    about_mastodon_html: Mastodon 은<em>자유로운 오픈 소스</em>소셜 네트워크입니다. 상용 플랫폼의 대체로써 <em>분산형 구조</em>를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 &mdash; 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 Mastodon 인스턴스를 만들 수 있으며, Seamless하게 <em>소셜 네트워크</em>에 참가할 수 있습니다.
+    about_mastodon_html: Mastodon은 <em>오픈 소스 기반의</em> 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 <em>분산형 구조</em>를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 &mdash; 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 Mastodon 인스턴스를 만들 수 있으며, Seamless하게 <em>소셜 네트워크</em>에 참가할 수 있습니다.
     about_this: 이 인스턴스에 대해서
     closed_registrations: 현재 이 인스턴스에서는 신규 등록을 받고 있지 않습니다.
     contact: 연락처
-    description_headline: "%{domain} 는 무엇인가요?"
+    contact_missing: 미설정
+    contact_unavailable: N/A
+    description_headline: "%{domain} (은)는 무엇인가요?"
     domain_count_after: 개의 인스턴스
-    domain_count_before: 연결됨
+    domain_count_before: 연결된
+    extended_description_html: |
+      <h3>룰을 작성하는 장소</h3>
+      <p>아직 설명이 작성되지 않았습니다.</p>
+    features:
+      humane_approach_body: 다른 SNS의 실패를 교훈삼아, Mastodon은 소셜미디어가 잘못 사용되는 것을 막기 위하여 윤리적인 설계를 추구합니다.
+      humane_approach_title: 보다 배려를 의식한 설계를 추구
+      not_a_product_body: Mastodon은 이익을 추구하는 SNS가 아닙니다. 그러므로 광고와 데이터의 수집 및 분석이 존재하지 않고, 유저를 구속하지도 않습니다.
+      not_a_product_title: 여러분은 사람이며, 상품이 아닙니다.
+      real_conversation_body: 자유롭게 사용할 수 있는 500문자의 메세지와 미디어 경고 내용을 바탕으로, 자기자신을 자유롭게 표현할 수 있습니다.
+      real_conversation_title: 진정한 커뮤니케이션을 위하여
+      within_reach_body: 개발자 친화적인 API에 의해서 실현된 iOS나 Android, 그 외의 여러 Platform들 덕분에 어디서든 친구들과 자유롭게 메세지를 주고 받을 수 있습니다.
+      within_reach_title: 언제나 유저의 곁에서
+    find_another_instance: 다른 인스턴스 찾기
+    generic_description: "%{domain} 은 Mastodon의 인스턴스 입니다."
+    hosted_on: Mastodon hosted on %{domain}
+    learn_more: 자세히
     other_instances: 다른 인스턴스
     source_code: 소스 코드
     status_count_after: Toot
     status_count_before: Toot 수
     user_count_after: 명
     user_count_before: 사용자 수
+    what_is_mastodon: Mastodon이란?
   accounts:
     follow: 팔로우
     followers: 팔로워
     following: 팔로잉
+    media: 미디어
     nothing_here: 아무 것도 없습니다.
     people_followed_by: "%{name} 님이 팔로우 중인 계정"
     people_who_follow: "%{name} 님을 팔로우 중인 계정"
-    posts: 포스트
+    posts: Toot
+    posts_with_replies: Toot와 답장
     remote_follow: 리모트 팔로우
     reserved_username: 이 아이디는 예약되어 있습니다.
+    roles:
+      admin: Admin
     unfollow: 팔로우 해제
   admin:
     accounts:
@@ -38,6 +61,7 @@ ko:
       feed_url: 피드 URL
       followers: 팔로워 수
       follows: 팔로잉 수
+      inbox_url: Inbox URL
       ip: IP
       location:
         all: 전체
@@ -57,8 +81,10 @@ ko:
         alphabetic: 알파벳 순
         most_recent: 최근 활동 순
         title: 순서
+      outbox_url: Outbox URL
       perform_full_suspension: 완전히 정지시키기
       profile_url: 프로필 URL
+      protocol: Protocol
       public: 전체 공개
       push_subscription_expires: PuSH 구독 기간 만료
       redownload: 아바타 업데이트
@@ -90,12 +116,14 @@ ko:
         hint: 도메인 차단은 내부 데이터베이스에 계정이 생성되는 것까지는 막을 수 없지만, 그 도메인에서 생성된 계정에 자동적으로 특정한 모더레이션을 적용하게 할 수 있습니다.
         severity:
           desc_html: "<strong>침묵</strong>은 계정을 팔로우 하지 않고 있는 사람들에겐 계정의 Toot을 보이지 않게 합니다. <strong>정지</strong>는 계정의 컨텐츠, 미디어, 프로필 데이터를 삭제합니다."
+          noop: 없음
           silence: 침묵
           suspend: 정지
         title: 새로운 도메인 차단
       reject_media: 미디어 파일 거부하기
       reject_media_hint: 로컬에 저장된 미디어 파일을 삭제하고, 이후로도 다운로드를 거부합니다. 정지하고는 관계 없습니다.
       severities:
+        noop: 없음
         silence: 침묵
         suspend: 정지
       severity: 심각도
@@ -146,16 +174,41 @@ ko:
         closed_message:
           desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. <br>HTML 태그를 사용할 수 있습니다.
           title: 신규 등록 정지 시 메시지
+        deletion:
+          desc_html: 유저가 자신의 계정을 삭제할 수 있도록 설정합니다.
+          title: 계정 삭제를 허가함
         open:
-          title: 신규 등록을 받음
+          desc_html: 유저가 자신의 계정을 생성할 수 있도록 설정합니다.
+          title: 신규 계정 등록을 받음
       site_description:
         desc_html: 탑 페이지와 meta 태그에 사용됩니다.<br>HTML 태그, 예를 들어<code>&lt;a&gt;</code> 태그와 <code>&lt;em&gt;</code> 태그를 사용할 수 있습니다.
         title: 사이트 설명
       site_description_extended:
         desc_html: 인스턴스 정보 페이지에 표시됩니다.<br>HTML 태그를 사용할 수 있습니다.
         title: 사이트 상세 설명
+      site_terms:
+        desc_html: 당신은 독자적인 개인정보 취급 방침이나 이용약관, 그 외의 법적 근거를 작성할 수 있습니다. 또한 HTML태그를 사용할 수 있습니다.
+        title: 커스텀 서비스 이용 약관
       site_title: 사이트 이름
+      timeline_preview:
+        desc_html: Landing page에 공개 타임라인을 표시합니다.
+        title: 타임라인 프리뷰
       title: 사이트 설정
+    statuses:
+      back_to_account: 계정으로 돌아가기
+      batch:
+        delete: 삭제
+        nsfw_off: NSFW 끄기
+        nsfw_on: NSFW 켜기
+      execute: 실행
+      failed_to_execute: 실행이 실패하였습니다.
+      media:
+        hide: 미디어 숨기기
+        show: 미디어 보여주기
+        title: 미디어
+      no_media: 미디어 없음
+      title: 계정 Toot
+      with_media: 미디어 있음
     subscriptions:
       callback_url: 콜백 URL
       confirmed: 확인됨
@@ -173,13 +226,21 @@ ko:
     signature: Mastodon %{instance} 인스턴스로에서 알림
     view: 'View:'
   applications:
+    created: 어플리케이션이 작성되었습니다.
+    destroyed: 어플리케이션이 삭제되었습니다.
     invalid_url: 올바르지 않은 URL입니다
+    regenerate_token: 토큰 재생성
+    token_regenerated: 액세스 토큰이 재생성되었습니다.
+    warning: 이 데이터는 다른 사람들과 절대로 공유하지 마세요.
+    your_token: 액세스 토큰
   auth:
+    agreement_html: 이 등록으로 <a href="%{rules_path}">이용규약</a> 과 <a href="%{terms_path}">개인정보 취급 방침</a>에 동의하는 것으로 간주됩니다.
     change_password: 보안
     delete_account: 계정 삭제
     delete_account_html: 계정을 삭제하고 싶은 경우, <a href="%{path}">여기서</a> 삭제할 수 있습니다. 삭제 전 확인 화면이 표시됩니다.
     didnt_get_confirmation: 확인 메일을 받지 못하셨습니까?
     forgot_password: 비밀번호를 잊어버리셨습니까?
+    invalid_reset_password_token: 비밀번호 리셋 토큰이 올바르지 못하거나 기간이 만료되었습니다. 다시 요청해주세요.
     login: 로그인
     logout: 로그아웃
     register: 등록하기
@@ -189,7 +250,12 @@ ko:
   authorize_follow:
     error: 리모트 팔로우 도중 오류가 발생했습니다.
     follow: 팔로우
-    prompt_html: '나(<strong>%{self}</strong>) 는 아래 계정의 팔로우를 요청했습니다:'
+    follow_request: '당신은 다음 계정에 팔로우 신청을 했습니다:'
+    following: '성공! 당신은 다음 계정을 팔로우 하고 있습니다:'
+    post_follow:
+      close: 혹은, 당신은 이 윈도우를 닫을 수 있습니다
+      return: 유저 프로필로 돌아가기
+      web: 웹으로 가기
     title: "%{acct} 를 팔로우"
   datetime:
     distance_in_words:
@@ -221,7 +287,7 @@ ko:
       content: 보안 인증에 실패했습니다. Cookie를 차단하고 있진 않습니까?
       title: 보안 인증 실패
     '429': 요청 횟수 제한에 도달했습니다.
-    noscript: Mastodon을 사용하기 위해서는 JavaScript를 켜 주십시오.
+    noscript_html: Mastodon을 사용하기 위해서는 JavaScript를 켜 주십시오.
   exports:
     blocks: 차단
     csv: CSV
@@ -272,8 +338,8 @@ ko:
         one: "1건의 새로운 알림 \U0001F418"
         other: "%{count}건의 새로운 알림 \U0001F418"
     favourite:
-      body: "%{name} 님이 내 Toot을 즐겨찾기에 등록했습니다."
-      subject: "%{name} 님이 내 Toot을 즐겨찾기에 등록했습니다"
+      body: "%{name} 님이 내 Toot를 즐겨찾기에 등록했습니다."
+      subject: "%{name} 님이 내 Toot를 즐겨찾기에 등록했습니다"
     follow:
       body: "%{name} 님이 나를 팔로우 했습니다"
       subject: "%{name} 님이 나를 팔로우 했습니다"
@@ -286,10 +352,35 @@ ko:
     reblog:
       body: "%{name} 님이 내 Toot을 부스트 했습니다:"
       subject: "%{name} 님이 내 Toot을 부스트 했습니다"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: 다음
     prev: 이전
     truncate: "&hellip;"
+  push_notifications:
+    favourite:
+      title: "%{name} 님이 당신의 Toot를 즐겨찾기에 등록했습니다."
+    follow:
+      title: "%{name} 님이 나를 팔로우 하고 있습니다."
+    group:
+      title: "%{count} 건의 알림"
+    mention:
+      action_boost: 부스트
+      action_expand: 더보기
+      action_favourite: 즐겨찾기
+      title: "%{name} 님이 답장을 보냈습니다"
+    reblog:
+      title: "%{name} 님이 당신의 Toot를 부스트 했습니다."
   remote_follow:
     acct: 아이디@도메인을 입력해 주십시오
     missing_resource: 리디렉션 대상을 찾을 수 없습니다
@@ -331,11 +422,14 @@ ko:
       windows: Windows
       windows_mobile: Windows Mobile
       windows_phone: Windows Phone
+    revoke: 삭제
+    revoke_success: 세션이 삭제되었습니다.
     title: 세션
   settings:
     authorized_apps: 인증된 어플리케이션
     back: 돌아가기
     delete: 계정 삭제
+    development: 개발
     edit_profile: 프로필 편집
     export: 데이터 내보내기
     followers: 신뢰 중인 인스턴스
@@ -343,9 +437,14 @@ ko:
     preferences: 사용자 설정
     settings: 설정
     two_factor_authentication: 2단계 인증
+    your_apps: 애플리케이션
   statuses:
     open_in_web: Web으로 열기
     over_character_limit: 최대 %{max}자까지 입력할 수 있습니다
+    pin_errors:
+      ownership: 다른 사람의 Toot는 고정될 수 없습니다.
+      private: 비공개 Toot는 고정될 수 없습니다.
+      reblog: 부스트는 고정될 수 없습니다.
     show_more: 더 보기
     visibilities:
       private: 비공개
@@ -356,8 +455,11 @@ ko:
       unlisted_long: 누구나 볼 수 있지만, 공개 타임라인에는 표시되지 않습니다
   stream_entries:
     click_to_show: 클릭해서 표시
+    pinned: 고정된 Toot
     reblogged: 님이 부스트 했습니다
     sensitive_content: 민감한 컨텐츠
+  terms:
+    title: "%{instance} 이용약관과 개인정보 취급 방침"
   time:
     formats:
       default: "%Y년 %m월 %d일 %H:%M"
@@ -380,3 +482,4 @@ ko:
   users:
     invalid_email: 메일 주소가 올바르지 않습니다
     invalid_otp_token: 2단계 인증 코드가 올바르지 않습니다
+    signed_in_as: '다음과 같이 로그인 중:'
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index e65658d8b..06035b6c5 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -41,8 +41,11 @@ nl:
     people_followed_by: Mensen die %{name} volgt
     people_who_follow: Mensen die %{name} volgen
     posts: Toots
+    posts_with_replies: Toots met reacties
     remote_follow: Extern volgen
     reserved_username: Deze gebruikersnaam is gereserveerd
+    roles:
+      admin: Beheerder
     unfollow: Ontvolgen
   admin:
     accounts:
@@ -56,7 +59,9 @@ nl:
       email: E-mail
       feed_url: Feed-URL
       followers: Volgers
+      followers_url: Volgers-URL
       follows: Volgt
+      inbox_url: Inbox-URL
       ip: IP
       location:
         all: Alles
@@ -86,6 +91,7 @@ nl:
       resubscribe: Opnieuw abonneren
       salmon_url: Salmon-URL
       search: Zoeken
+      shared_inbox_url: Gedeelde inbox-URL
       show:
         created_reports: Toots door dit account gerapporteerd
         report: gerapporteerd
@@ -106,7 +112,7 @@ nl:
       domain: Domein
       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. 
+        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.
         severity:
           desc_html: "<strong>Negeren</strong> zorgt ervoor dat berichten van accounts van dit domein voor iedereen onzichtbaar zijn, behalve als een account wordt gevolgd. <strong>Opschorten</strong> zorgt ervoor dat alle berichten, media en profielgegevens van accounts van dit domein worden verwijderd. Gebruik <strong>Geen</strong> wanneer je alleen mediabestanden wilt weigeren."
           noop: Geen
@@ -129,7 +135,7 @@ nl:
           suspend: Alle opgeschorste accounts van dit domein niet meer opschorten
         title: Domeinblokkade voor %{domain} ongedaan maken
         undo: Ongedaan maken
-      title: Domeinblokkades 
+      title: Domeinblokkades
       undo: Ongedaan maken
     instances:
       account_count: Bekende accounts
@@ -160,6 +166,9 @@ nl:
       unresolved: Onopgelost
       view: Weergeven
     settings:
+      bootstrap_timeline_accounts:
+        desc_html: Meerdere gebruikersnamen met komma's scheiden. Alleen lokale en niet opgeschorte accounts werken. Laat leeg voor alle lokale beheerders.
+        title: Standaard te volgen accounts voor nieuwe gebruikers
       contact_information:
         email: Vul een openbaar gebruikt e-mailadres in
         username: Vul een gebruikersnaam in
@@ -169,7 +178,7 @@ nl:
           title: Bericht wanneer registratie is uitgeschakeld
         deletion:
           desc_html: Toestaan dat iedereen hun eigen account kan verwijderen
-          title:  Verwijderen account toestaan
+          title: Verwijderen account toestaan
         open:
           desc_html: Toestaan dat iedereen een account kan registereren
           title: Open registratie
@@ -183,6 +192,9 @@ nl:
         desc_html: Je kan hier jouw eigen privacybeleid, gebruikersvoorwaarden en ander juridisch jargon kwijt. Je kan HTML gebruiken.
         title: Aangepaste gebruikersvoorwaarden
       site_title: Naam Mastodon-server
+      thumbnail:
+        desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen.
+        title: Thumbnail Mastodon-server
       timeline_preview:
         desc_html: Toon de openbare tijdlijn op de startpagina
         title: Voorbeeld tijdlijn
@@ -220,7 +232,7 @@ nl:
   applications:
     invalid_url: De opgegeven URL is ongeldig
   auth:
-    agreement_html: Wanneer je op registeren klikt ga je akkoord met <a href="%{rules_path}">onze gebruikersvoorwaarden</a> en <a href="%{terms_path}">ons privacybeleid</a>.
+    agreement_html: Wanneer je op registreren klikt ga je akkoord met <a href="%{rules_path}">onze gebruikersvoorwaarden</a> en <a href="%{terms_path}">ons privacybeleid</a>.
     change_password: Beveiliging
     delete_account: Account verwijderen
     delete_account_html: Wanneer je jouw account graag wilt verwijderen, kan je dat <a href="%{path}">hier doen</a>. We vragen jou daar om een bevestiging.
@@ -241,7 +253,6 @@ nl:
       close: Of je kan dit venster gewoon sluiten.
       return: Ga terug naar het profiel van de gebruiker
       web: Ga naar de webapp
-    prompt_html: 'Je (<strong>%{self}</strong>) hebt toestemming gevraagd om iemand te mogen volgen:'
     title: Volg %{acct}
   datetime:
     distance_in_words:
@@ -273,7 +284,7 @@ nl:
       content: Veiligheidsverificatie mislukt. Blokkeer je toevallig cookies?
       title: Veiligheidsverificatie mislukt
     '429': Te veel verbindingsaanvragen.
-    noscript: Schakel JavaScript in om de webapplicatie van Mastodon te gebruiken. Als alternatief kan je een Mastodon-app zoeken voor jouw platform.
+    noscript_html: Schakel JavaScript in om de webapp van Mastodon te kunnen gebruiken. Als alternatief kan je een <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">Mastodon-app</a> zoeken voor jouw platform.
   exports:
     blocks: Jij blokkeert
     csv: CSV
@@ -307,7 +318,7 @@ nl:
       following: Volglijst
       muting: Negeerlijst
     upload: Uploaden
-  landing_strip_html: <strong>%{name}</strong> is een gebruiker op %{link_to_root_path}. Je kunt deze volgen en ermee communiceren als je ergens in deze fediverse een account hebt.
+  landing_strip_html: "<strong>%{name}</strong> is een gebruiker op %{link_to_root_path}. Je kunt deze volgen en ermee communiceren als je ergens in deze fediverse een account hebt."
   landing_strip_signup_html: Als je dat niet hebt, kun je je <a href="%{sign_up_path}">hier registreren</a>.
   media_attachments:
     validations:
@@ -338,6 +349,17 @@ nl:
     reblog:
       body: 'Jouw toot werd door %{name} geboost:'
       subject: "%{name} boostte jouw toot"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Volgende
     prev: Vorige
@@ -354,9 +376,6 @@ nl:
       title: "%{name} vermeldde jou"
     reblog:
       title: "%{name} boostte jouw toot"
-    subscribed:
-      body: Je kan nu pushmeldingen ontvangen.
-      title: Aanmelding bevestigd!
   remote_follow:
     acct: Geef jouw account@domein.tld op waarvandaan je wilt volgen
     missing_resource: Kon vereiste doorverwijzings-URL voor jouw account niet vinden
@@ -405,6 +424,7 @@ nl:
     authorized_apps: Geautoriseerde apps
     back: Terug naar Mastodon
     delete: Account deletion
+    development: Ontwikkelaars
     edit_profile: Profiel bewerken
     export: Export
     followers: Geautoriseerde volgers
@@ -412,9 +432,15 @@ nl:
     preferences: Voorkeuren
     settings: Instellingen
     two_factor_authentication: Tweestapsverificatie
+    your_apps: Jouw toepassingen
   statuses:
     open_in_web: In de webapp openen
     over_character_limit: Limiet van %{max} tekens overschreden
+    pin_errors:
+      limit: Te veel toots vastgezet
+      ownership: Een toot van iemand anders kan niet worden vastgezet
+      private: Alleen openbare toots kunnen worden vastgezet
+      reblog: Een boost kan niet worden vastgezet
     show_more: Meer tonen
     visibilities:
       private: Alleen volgers
@@ -425,6 +451,7 @@ nl:
       unlisted_long: Aan iedereen tonen, maar niet op openbare tijdlijnen
   stream_entries:
     click_to_show: Klik om te tonen
+    pinned: Vastgemaakte toot
     reblogged: boostte
     sensitive_content: Gevoelige inhoud
   terms:
@@ -510,7 +537,7 @@ nl:
     generate_recovery_codes: Herstelcodes genereren
     instructions_html: "<strong>Scan deze QR-code in Google Authenticator of een soortgelijke app op jouw mobiele telefoon</strong>. Van nu af aan genereert deze app aanmeldcodes die je bij het aanmelden moet invoeren."
     lost_recovery_codes: Met herstelcodes kun je toegang tot jouw account krijgen wanneer je jouw telefoon bent kwijtgeraakt. Wanneer je jouw herstelcodes bent kwijtgeraakt, kan je ze hier opnieuw genereren. Jouw oude herstelcodes zijn daarna ongeldig.
-    manual_instructions: 'Hieronder vind je de geheime code in platte tekst. Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren.'
+    manual_instructions: Hieronder vind je de geheime code in platte tekst. Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren.
     recovery_codes: Herstelcodes back-uppen
     recovery_codes_regenerated: Opnieuw genereren herstelcodes geslaagd
     recovery_instructions_html: Wanneer je ooit de toegang verliest tot jouw telefoon, kan je met behulp van een van de herstelcodes hieronder opnieuw toegang krijgen tot jouw account. Zorg ervoor dat je de herstelcodes op een veilige plek bewaard. (Je kunt ze bijvoorbeeld printen en ze samen met andere belangrijke documenten bewaren.)
diff --git a/config/locales/no.yml b/config/locales/no.yml
index b2e5773de..207f86afc 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -170,7 +170,6 @@
   authorize_follow:
     error: Uheldigvis så skjedde det en feil da vi prøvde å få tak i en bruker fra en annen instans.
     follow: Følg
-    prompt_html: 'Du (<strong>%{self}</strong>) har spurt om å følge:'
     title: Følg %{acct}
   datetime:
     distance_in_words:
@@ -258,6 +257,17 @@
     reblog:
       body: 'Din status ble fremhevd av %{name}:'
       subject: "%{name} fremhevde din status"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Neste
     prev: Forrige
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index d9a589287..584f4c609 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -7,7 +7,7 @@ oc:
     contact: Contacte
     contact_missing: Pas parametrat
     contact_unavailable: Pas disponible
-    description_headline: Qué es %{domain} ?
+    description_headline: Qué es %{domain} ?
     domain_count_after: autras instàncias
     domain_count_before: Connectat a
     extended_description_html: |
@@ -31,22 +31,26 @@ oc:
     status_count_after: estatuts
     status_count_before: qu’an escrich
     user_count_after: personas
-    user_count_before: Ostal de 
-    what_is_mastodon: Qu’es Mastodon ?
+    user_count_before: Ostal de
+    what_is_mastodon: Qu’es Mastodon ?
   accounts:
     follow: Sègre
     followers: Seguidors
     following: Abonaments
-    nothing_here: I a pas res aquí !
+    media: Mèdias
+    nothing_here: I a pas res aquí !
     people_followed_by: Lo mond que %{name} sèc
     people_who_follow: Lo mond que sègon %{name}
-    posts: Estatuts
+    posts: Tuts
+    posts_with_replies: Tuts amb responsas
     remote_follow: Sègre a distància
     reserved_username: Aqueste nom d’utilizaire es reservat
+    roles:
+      admin: Admin
     unfollow: Quitar de sègre
   admin:
     accounts:
-      are_you_sure: Sètz segur ?
+      are_you_sure: Sètz segur ?
       confirm: Confirmar
       confirmed: Confirmat
       disable_two_factor_authentication: Desactivar 2FA
@@ -56,7 +60,9 @@ oc:
       email: Corrièl
       feed_url: Flux URL
       followers: Seguidors
+      followers_url: URL dels seguidors
       follows: Abonaments
+      inbox_url: URL de recepcion
       ip: IP
       location:
         all: Tot
@@ -76,8 +82,10 @@ oc:
         alphabetic: Alfabetic
         most_recent: Mai recent
         title: Ordre
+      outbox_url: URL Outbox
       perform_full_suspension: Botar en tren la suspension complèta
       profile_url: URL del perfil
+      protocol: Protocòl
       public: Public
       push_subscription_expires: Fin de l’abonament PuSH
       redownload: Actualizar los avatars
@@ -85,6 +93,7 @@ oc:
       reset_password: Reïnicializar lo senhal
       resubscribe: Se tornar abonar
       salmon_url: URL Salmon
+      shared_inbox_url: URL de recepcion partejada
       search: Cercar
       show:
         created_reports: Rapòrts creat per aqueste compte
@@ -96,8 +105,21 @@ oc:
       title: Comptes
       undo_silenced: Levar lo silenci
       undo_suspension: Levar la suspension
+      unsubscribe: Se desabonar
       username: Nom d’utilizaire
       web: Web
+    custom_emojis:
+      created_msg: Emoji ben creat !
+      delete: Suprimir
+      destroyed_msg: Emojo ben suprimit !
+      emoji: Emoji
+      image_hint: PNG cap a 50Ko
+      new:
+        title: Ajustar un nòu emoji personal
+      shortcode: Acorchi
+      shortcode_hint: Almens 2 caractèrs, solament alfanumerics e jonhent bas
+      title: Emojis personals
+      upload: Enviar
     domain_blocks:
       add_new: N’ajustar un nòu
       created_msg: Domeni blocat es a èsser tractat
@@ -133,10 +155,12 @@ oc:
     instances:
       account_count: Comptes coneguts
       domain_name: Domeni
+      reset: Reïnicializar
+      search: Cercar
       title: Instàncias conegudas
     reports:
-      action_taken_by: Accion menada per
-      are_you_sure: Es segur ?
+      action_taken_by: Mesura menada per
+      are_you_sure: Es segur ?
       comment:
         label: Comentari
         none: Pas cap
@@ -159,6 +183,9 @@ oc:
       unresolved: Pas resolguts
       view: Veire
     settings:
+      bootstrap_timeline_accounts:
+        desc_html: Separatz los noms d’utilizaire amb de virgula. Pas que los comptes locals e pas clavats foncionaràn. Se lo camp es void los admins seràn selecionats.
+        title: Per defaut los nouvenguts sègon
       contact_information:
         email: Picatz una adreça de corrièl
         username: Picatz un nom d’utilizaire
@@ -182,6 +209,9 @@ oc:
         desc_html: Afichada sus la pagina de las condicions d’utilizacion<br>Podètz utilizar de balisas HTML
         title: Politica de confidencialitat del site
       site_title: Títol del site
+      thumbnail:
+        desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada.
+        title: Miniatura de l’instància
       timeline_preview:
         desc_html: Mostrar lo flux public sus la pagina d’acuèlh
         title: Apercebut flux public
@@ -214,18 +244,26 @@ oc:
       body: "%{reporter} a senhalat %{target}"
       subject: Novèl senhalament per %{instance} (#%{id})
   application_mailer:
-    settings: 'Cambiar las preferéncias de corrièl : %{link}'
+    salutation: "%{name},"
+    settings: 'Cambiar las preferéncias de corrièl : %{link}'
     signature: Notificacion de Mastodon sus %{instance}
-    view: 'Veire :'
+    view: 'Veire :'
   applications:
+    created: Aplicacion ben creada
+    destroyed: Aplication ben suprimida
     invalid_url: L’URL donada es invalida
+    regenerate_token: Tornar generar lo geton d’accès
+    token_regenerated: Geton d’accès ben regenerat
+    warning: Mèfi ! Agachatz de partejar aquela donada amb degun !
+    your_token: Vòstre geton d’accès
   auth:
     agreement_html: En vos marcar acceptatz <a href="%{rules_path}">nòstres tèrmes de servici</a> e <a href="%{terms_path}">politica de confidencialitat</a>.
     change_password: Seguretat
     delete_account: Suprimir lo compte
     delete_account_html: Se volètz suprimir vòstre compte, podètz <a href="%{path}">o far aquí</a>. Vos demandarem que confirmetz.
-    didnt_get_confirmation: Avètz pas recebut las instruccions de confirmacion ?
-    forgot_password: Senhal oblidat ?
+    didnt_get_confirmation: Avètz pas recebut las instruccions de confirmacion ?
+    forgot_password: Senhal oblidat ?
+    invalid_reset_password_token: Lo geton de reïnicializacion es invalid o acabat. Tornatz demandar un geton se vos plai.
     login: Se connectar
     logout: Se desconnectar
     register: Se marcar
@@ -235,13 +273,12 @@ oc:
   authorize_follow:
     error: O planhèm, i a agut una error al moment de cercar lo compte
     follow: Sègre
-    follow_request: 'Avètz demandat de sègre :'
-    following: 'Felicitacion ! Seguètz ara :'
+    follow_request: 'Avètz demandat de sègre :'
+    following: 'Felicitacion ! Seguètz ara :'
     post_follow:
       close: O podètz tampar aquesta fenèstra.
       return: Tornar al perfil
       web: Tornar a l’interfàcia Web
-    prompt_html: 'Avètz (<strong>%{self}</strong>) demandat de sègre :'
     title: Sègre %{acct}
   date:
     abbr_day_names:
@@ -257,11 +294,11 @@ oc:
     - gen
     - feb
     - mar
-    - mai
+    - abr
     - mai
     - jun
     - jul
-    - ag
+    - ago
     - set
     - oct
     - nov
@@ -276,8 +313,8 @@ oc:
     - dissabte
     formats:
       default: "%e/%m/%Y"
-      long: Lo %e %B de %Y
-      short: "%e %b"
+      long: Lo %-d %b de %Y
+      short: "%e %B"
     month_names:
     - 
     - de genièr
@@ -298,26 +335,45 @@ oc:
     - :year
   datetime:
     distance_in_words:
-      about_x_hours: Fa %{count} oras
-      about_x_months: Fa %{count} meses
+      about_x_hours:
+        one: Fa una ora
+        other: Fa %{count} oras
+      about_x_months:
+        one: Fa un mes
+        other: Fa %{count} meses
       about_x_years:
         one: Fa un an
         other: Fa %{count} ans
       almost_x_years:
-        one: Fa un an
-        other: Fa %{count} ans
+        one: Fa quasi un an
+        other: Fa quasi %{count} ans
       half_a_minute: Ara
-      less_than_x_minutes: Fa %{count} minutas
-      less_than_x_seconds: Ara
+      less_than_x_minutes:
+        one: Fa mens d’una minuta
+        other: Fa mens de %{count} minutas
+      less_than_x_seconds:
+        one: Fa mens d’una segonda
+        other: Fa mens de %{count} segondas
       over_x_years:
+        one: Fa mai d’un an
+        other: Fa mai de %{count} ans
+      x_days:
+        one: Fa un jorn
+        other: Fa %{count} jorns
+      x_minutes:
+        one: Fa una minuta
+        other: Fa %{count} minutas
+      x_months:
+        one: Fa un mes
+        other: Fa %{count} meses
+      x_seconds:
+        one: Fa una segonda
+        other: Fa %{count} segondas
+      x_years:
         one: Fa un an
         other: Fa %{count} ans
-      x_days: Fa %{count} jorns
-      x_minutes: Fa %{count} minutas
-      x_months: Fa %{count} meses
-      x_seconds: Fa %{count} segondas
   deletes:
-    bad_password_msg: Ben ensajat pirata ! Senhal incorrècte
+    bad_password_msg: Ben ensajat pirata ! Senhal incorrècte
     confirm_password: Picatz vòstre senhal actual per verificar vòstra identitat
     description_html: Aquò suprimirà <strong>definitivament e sens possibilitat de retorn</strong> lo contengut de vòstre compte e lo desactivarà. Lo nom d’utilizaire serà gardat per evitar una futura impostura.
     proceed: Suprimir lo compte
@@ -329,10 +385,10 @@ oc:
     '404': La pagina que recercatz existís pas.
     '410': La pagina que cercatz existís pas mai.
     '422':
-      content: Verificacion de seguretat fracassada. Blocatz los cookies ?
+      content: Verificacion de seguretat fracassada. Blocatz los cookies ?
       title: Verificacion de seguretat fracassada
     '429': Lo servidor mòla (subrecargada)
-    noscript: Per utilizar l’aplicacion web de Mastodon, mercés d’activar JavaScript. O podètz utilizar una aplicacion per vòstra plataforma coma alernativa.
+    noscript_html: Per utilizar l’aplicacion web de Mastodon, mercés d’activar JavaScript. O podètz utilizar <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">una aplicacion</a> per vòstra plataforma coma alernativa.
   exports:
     blocks: Personas que blocatz
     csv: CSV
@@ -346,18 +402,18 @@ oc:
     lock_link: Clavar vòstre compte
     purge: Tirar dels seguidors
     success:
-      one: Soi a blocar los seguidors d’un domeni...
-      other: Soi a blocar los seguidors de %{count} domenis...
+      one: Soi a blocar los seguidors d’un domeni…
+      other: Soi a blocar los seguidors de %{count} domenis…
     true_privacy_html: Mèfi que la <strong>vertadièra confidencialitat pòt solament èsser amb un chiframent del cap a la fin (end-to-end)</strong>.
     unlocked_warning_html: Tot lo mond pòt vos sègre e veire sulpic vòstres estatuts privats. %{lock_link} per poder repassar e regetar los seguidors.
     unlocked_warning_title: Vòstre compte es pas clavat
   generic:
-    changes_saved_msg: Cambiaments ben realizats !
+    changes_saved_msg: Cambiaments ben realizats !
     powered_by: propulsat per %{link}
     save_changes: Salvagardar los cambiaments
     validation_errors:
-      one: I a quicòm que truca ! Mercés de corregir l’error çai-jos
-      other: I a quicòm que truca ! Mercés de corregir las %{count} errors çai-jos
+      one: I a quicòm que truca ! Mercés de corregir l’error çai-jos
+      other: I a quicòm que truca ! Mercés de corregir las %{count} errors çai-jos
   imports:
     preface: Podètz importar qualques donadas coma lo mond que seguètz o blocatz a-n aquesta instància d’un fichièr creat d’una autra instància.
     success: Vòstras donadas son ben estadas mandadas e seràn tractadas tre que possible
@@ -375,28 +431,39 @@ oc:
   notification_mailer:
     digest:
       body: 'Trobatz aquí un resumit de çò qu’avètz mancat dempuèi vòstra darrièra visita lo %{since}:'
-      mention: "%{name} vos a mencionat dins :"
+      mention: "%{name} vos a mencionat dins :"
       new_followers_summary:
-        one: Avètz un nòu seguidor ! Ouà !
-        other: Avètz %{count} nòus seguidors ! Qué crane !
+        one: Avètz un nòu seguidor ! Ouà  
+        other: Avètz %{count} nòus seguidors ! Qué crane !
       subject:
         one: "Una nòva notificacion dempuèi vòstra darrièra visita \U0001F418"
         other: "%{count} nòvas notificacions dempuèi vòstra darrièra visita \U0001F418"
     favourite:
-      body: "%{name} a mes vòstre estatut en favorit :"
+      body: "%{name} a mes vòstre estatut en favorit :"
       subject: "%{name} a mes vòstre estatut en favorit"
     follow:
-      body: "%{name} vos sèc ara !"
+      body: "%{name} vos sèc ara !"
       subject: "%{name} vos sèc ara"
     follow_request:
       body: "%{name} a demandat a vos sègre"
-      subject: 'Demanda d’abonament : %{name}'
+      subject: 'Demanda d’abonament : %{name}'
     mention:
-      body: "%{name} vos a mencionat dins :"
+      body: "%{name} vos a mencionat dins :"
       subject: "%{name} vos a mencionat"
     reblog:
-      body: "%{name} a tornat partejar vòstre estatut :"
+      body: "%{name} a tornat partejar vòstre estatut :"
       subject: "%{name} a tornat partejar vòstre estatut"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Seguent
     prev: Precedent
@@ -415,14 +482,11 @@ oc:
       title: "%{name} vos a mencionat"
     reblog:
       title: "%{name} a partejat vòstre estatut"
-    subscribed:
-      body: Podètz ara recebre las notificacions push.
-      title: Abonament enregistrat !
   remote_follow:
     acct: Picatz vòstre utilizaire@instància que cal utilizar per sègre aqueste utilizaire
     missing_resource: URL de redireccion pas trobada
     proceed: Contunhatz per sègre
-    prompt: 'Sètz per sègre :'
+    prompt: 'Sètz per sègre :'
   sessions:
     activity: Darrièra activitat
     browser: Navigator
@@ -466,6 +530,7 @@ oc:
     authorized_apps: Aplicacions autorizadas
     back: Tornar a Mastodon
     delete: Supression de compte
+    development: Desvolopament
     edit_profile: Modificar lo perfil
     export: Export donadas
     followers: Seguidors autorizats
@@ -473,9 +538,15 @@ oc:
     preferences: Preferéncias
     settings: Paramètres
     two_factor_authentication: Autentificacion en dos temps
+    your_apps: Vòstras aplicacions
   statuses:
     open_in_web: Dobrir sul web
     over_character_limit: limit de %{max} caractèrs passat
+    pin_errors:
+      limit: Tròp de tuts penjats
+      ownership: Se pòt pas penjar lo tut de qualqu’un mai
+      private: Se pòt pas penjar los tuts pas publics
+      reblog: Se pòt pas penjar un tut partejat
     show_more: Ne veire mai
     visibilities:
       private: Seguidors solament
@@ -485,22 +556,23 @@ oc:
       unlisted: Pas listat
       unlisted_long: Tot lo mond pòt veire mai serà pas visible sul flux public
   stream_entries:
-    click_to_show: Clicatz per afichar
+    click_to_show: Clicatz per veire
+    pinned: Tut penjat
     reblogged: a partejat
     sensitive_content: Contengut sensible
   terms:
     body_html: |
       <h2>Politica de confidencialitat</h2>
 
-      <h3 id="collect">Quinas informacions collectem ?</h3>
+      <h3 id="collect">Quinas informacions reculhèm ?</h3>
 
-      <p>Collectem informacions sus vos quand vos marcatz sus nòstre site e juntem las donadas quand participatz a nòstre forum en legissent, escrivent e notant lo contengut partejat aquí.</p>
+      <p>Collectem informacions sus vos quand vos marcatz sus nòstre site e juntem las donadas quand participatz a nòstre forum en legir, escriure e notar lo contengut partejat aquí.</p>
 
       <p>Pendent l’inscripcion podèm vos demandar vòstre nom e adreça de corrièl. Podètz çaquelà visitar nòstre site sens vos marcar. Verificarem vòstra adreça amb un messatge donant un ligam unic. Se clicatz sul ligam sauprem qu’avètz lo contraròtle de l’adreça.</p>
 
       <p>Quand sètz marcat e que publicatz quicòm, enregistrem l’adreça IP d’origina. Podèm tanben salvagardar los jornals del servidor que tenon l’adreça IP de totas las demandas fachas al nòstre servidor.</p>
 
-      <h3 id="use">Qué fasèm de vòstras informacions ?</h3>
+      <h3 id="use">Qué fasèm de vòstras informacions ?</h3>
 
       <p>Totas las informacions que collectem de vos pòdon servir dins los cases seguents :</p>
 
@@ -511,26 +583,26 @@ oc:
         <li>Per enviar periodicament de corrièls &mdash; 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>
 
-      <h3 id="protect">Cossí protegèm vòstras informacions ?</h3>
+      <h3 id="protect">Cossí protegèm vòstras informacions ?</h3>
 
       <p>Apliquem tota una mena de mesuras de seguretat per manténer la fisança de vòstras informacions personalas quand las picatz, mandatz, o i accedètz.</p>
 
-      <h3 id="data-retention">Quala es vòstra politica de conservacion de donadas ?</h3>
+      <h3 id="data-retention">Quala es vòstra politica de conservacion de donadas ?</h3>
 
-      <p>Farem esfòrces per :</p>
+      <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 5 ans.</li>
       </ul>
 
-      <h3 id="cookies">Empleguem de cookies ?</h3>
+      <h3 id="cookies">Empleguem de cookies ?</h3>
 
-      <p>Òc-ben. Los cookies son de pichons fichièrs qu’un site o sos forneires de servicis plaçan dins lo disc dur de vòstre ordenador via lo navigator Web (Se los acceptatz). Aqueles cookies permeton al site de reconéisser vòstre navigator e se tenètz un compte enregistrat de l’associar a vòstre compte.</p>
+      <p>Òc-ben. Los cookies son de pichons fichièrs qu’un site o sos provesidors de servicis plaçan dins lo disc dur de vòstre ordenador via lo navigator Web (Se los acceptatz). Aqueles cookies permeton al site de reconéisser vòstre navigator e se tenètz un compte enregistrat de l’associar a vòstre compte.</p>
 
-      <p>Empleguem de cookies per comprendre e enregistrar vòstras preferéncias per vòstras visitas venentas, per recampar de donadas sul trafic del site e las interaccions per dire que posquem ofrir una melhora experiéncia del site e de las aisinas pel futur. Pòt arribar que contractèssem amb de forneires de servicis tèrces per nos ajudar a comprendre melhor nòstres visitors.  Aqueles forneires an pas lo drech que d’utilizar las donadas collectadas per nos ajudar a menar e melhorar nòstre afar.</p>
+      <p>Empleguem de cookies per comprendre e enregistrar vòstras preferéncias per vòstras visitas venentas, per recampar de donadas sul trafic del site e las interaccions per dire que posquem ofrir una melhora experiéncia del site e de las aisinas pel futur. Pòt arribar que contractèssem amb de provesidors de servicis tèrces per nos ajudar a comprendre melhor nòstres visitors.  Aqueles provesidors an pas lo drech que d’utilizar las donadas collectadas per nos ajudar a menar e melhorar nòstre afar.</p>
 
-      <h3 id="disclose">Divulguem d’informacions a de tèrces ?</h3>
+      <h3 id="disclose">Divulguem d’informacions a de tèrces ?</h3>
 
       <p>Vendèm pas, comercem o qualque transferiment que siasque a de tèrces vòstras informacions personalas identificablas. Aquò inclutz pas los tèrces partits de confisança que nos assiston a menar nòstre site, menar nòstre afar o vos servir, baste que son d’acòrd per gardar aquelas informacions confidencialas. Pòt tanben arribar que liberèssem vòstras informacions quand cresèm qu’es apropriat d’o far per se sometre a la lei, per refortir nòstras politicas, o per protegir los dreches, proprietats o seguritat de qualqu’un o de nosautres. Pasmens es possible que mandèssem d’informacions non-personalas e identificablas de nòstres visitors a d’autres partits per d’utilizacion en marketing, publicitat o un emplec mai.</p>
 
@@ -558,6 +630,8 @@ oc:
 
       <p>Prima adaptacion de la <a href="https://github.com/discourse/discourse">politica de confidencialitat de Discourse</a>.</p>
     title: Condicions d’utilizacion e politica de confidencialitat de %{instance}
+  themes:
+    default: Mastodon
   time:
     formats:
       default: Lo %d %b de %Y a %Ho%M
@@ -566,16 +640,18 @@ oc:
     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.
     disable: Desactivar
     enable: Activar
-    enabled_success: Autentificacion en dos temps Two-factor ben activada
+    enabled: Autentificacion en dos temps activada
+    enabled_success: L’autentificacion en dos temps es ben activada
     generate_recovery_codes: Generar los còdis de recuperacion
     instructions_html: "<strong>Escanatz aqueste còdi QR amb Google Authenticator o una aplicacion similària sus vòstre mobil</strong>. A partir d’ara, aquesta aplicacion generarà un geton que vos caldrà picar per vos connectar."
     lost_recovery_codes: Los còdi de recuperacion vos permeton d’accedir a vòstre compte se perdètz vòstre mobil. S’avètz perdut vòstres còdis de recuperacion los podètz tornar generar aquí. Los ancians còdis seràn pas mai valides.
-    manual_instructions: 'Se podètz pas numerizar lo còdi QR e que vos cal picar lo còdi a la man, vaquí lo còdi en clar :'
+    manual_instructions: 'Se podètz pas numerizar lo còdi QR e que vos cal picar lo còdi a la man, vaquí lo còdi en clar :'
     recovery_codes: Salvar los còdis de recuperacion
     recovery_codes_regenerated: Los còdis de recuperacion son ben estats tornats generar
     recovery_instructions_html: Se vos arriba de perdre vòstre mobil, podètz utilizar un dels còdis de recuperacion cai-jos per poder tornar accedir a vòstre compte. Gardatz los còdis en seguretat, per exemple, imprimissètz los e gardatz los amb vòstres documents importants.
     setup: Paramètres
-    wrong_code: Lo còdi picat es invalid ! L’ora es la bona sul servidor e lo mobil ?
+    wrong_code: Lo còdi picat es invalid ! L’ora es la bona sul servidor e lo mobil ?
   users:
     invalid_email: L’adreça de corrièl es invalida
     invalid_otp_token: Còdi d’autentificacion en dos temps invalid
+    signed_in_as: Session a
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index a30092d50..9bf57e38b 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -18,7 +18,7 @@ pl:
       humane_approach_title: Bardziej ludzkie podejście
       not_a_product_body: Mastodon nie jest komercyjną siecią. Nie doświadczysz tu reklam, zbierania danych, ani centralnego ośrodka, tak jak w przypadku wielu rozwiązań.
       not_a_product_title: Jesteś człowiekiem, nie produktem
-      real_conversation_body: Mając do dyspozycji 500 znaków na post, rozdrobnienie zawartości i ostrzeżenia o multimediach, możesz wyrażać siebie na wszystkie możliwe sposoby.
+      real_conversation_body: Mając do dyspozycji 500 znaków na wpis, rozdrobnienie zawartości i ostrzeżenia o multimediach, możesz wyrażać siebie na wszystkie możliwe sposoby.
       real_conversation_title: Zaprojektowany do prawdziwych rozmów
       within_reach_body: Wiele aplikacji dla Androida, iOS i innych platform dzięki przyjaznemu programistom API sprawia, że możesz utrzymywać kontakt ze znajomymi praktycznie wszędzie.
       within_reach_title: Zawsze w Twoim zasięgu
@@ -37,12 +37,16 @@ pl:
     follow: Śledź
     followers: Śledzących
     following: Śledzi
+    media: Zawartość multimedialna
     nothing_here: Niczego tu nie ma!
     people_followed_by: Konta śledzone przez %{name}
     people_who_follow: Osoby, które śledzą konto %{name}
     posts: Wpisy
-    remote_follow: Zdalne śledzenie
+    posts_with_replies: Wpisy z odpowiedziami
+    remote_follow: Śledź zdalnie
     reserved_username: Ta nazwa użytkownika jest zarezerwowana.
+    roles:
+      admin: Administrator
     unfollow: Przestań śledzić
   admin:
     accounts:
@@ -56,7 +60,9 @@ pl:
       email: Adres e-mail
       feed_url: Adres kanału
       followers: Śledzący
+      followers_url: Adres śledzących
       follows: Śledzeni
+      inbox: Adres skrzynki
       ip: Adres IP
       location:
         all: Wszystkie
@@ -65,12 +71,12 @@ pl:
         title: Położenie
       media_attachments: Załączniki multimedialne
       moderation:
-        all: Wszystko
+        all: Wszystkie
         silenced: Wyciszone
         suspended: Zawieszone
         title: Moderacja
       most_recent_activity: Najnowsza aktywność
-      most_recent_ip: Najnowsze IP
+      most_recent_ip: Ostatnie IP
       not_subscribed: Nie zasubskrybowano
       order:
         alphabetic: Alfabetycznie
@@ -86,11 +92,12 @@ pl:
       resubscribe: Ponów subskrypcję
       salmon_url: Adres Salmon
       search: Szukaj
+      shared_inbox_url: Adres udostępnianej skrzynki
       show:
         created_reports: Zgłoszenia tego użytkownika
-        report: zgłoszenie
+        report: zgłoszeń
         targeted_reports: Zgłoszenia dotyczące tego użytkownika
-      silence: Cisza
+      silence: Wycisz
       statuses: Statusy
       subscribe: Subskrybuj
       title: Konta
@@ -99,6 +106,18 @@ pl:
       unsubscribe: Przestań subskrybować
       username: Nazwa użytkownika
       web: Sieć
+    custom_emojis:
+      created_msg: Pomyślnie utworzono emoji!
+      delete: Usuń
+      destroyed_msg: Pomyślnie usunięto emoji!
+      emoji: Emoji
+      image_hint: Plik PNG ważący do 50KB
+      new:
+        title: Dodaj nowe niestandardowe emoji
+      shortcode: Shortcode
+      shortcode_hint: Co najmniej 2 znaki, tylko znaki alfanumeryczne i podkreślniki
+      title: Niestandardowe emoji
+      upload: Wyślij
     domain_blocks:
       add_new: Dodaj nową
       created_msg: Blokada domen jest przetwarzana
@@ -109,17 +128,20 @@ pl:
         hint: Blokada domen nie zabroni tworzenia wpisów kont w bazie danych, ale pozwoli na automatyczną moderację kont do nich należących.
         severity:
           desc_html: "<strong>Wyciszenie</strong> uczyni wpisy użytkownika widoczne tylko dla osób, które go śledzą. <strong>Zawieszenie</strong> spowoduje usunięcie całej zawartości dodanej przez użytkownika."
+          noop: Nic nie rób
           silence: Wycisz
           suspend: Zawieś
         title: Nowa blokada domen
       reject_media: Odrzucaj pliki multimedialne
       reject_media_hint: Usuwa przechowywane lokalnie pliki multimedialne i nie pozwala na ich pobieranie. Nieprzydatne przy zawieszeniu
       severities:
+        noop: Nic nie rób
         silence: Wycisz
         suspend: Zawieś
       severity: Priorytet
       show:
         affected_accounts:
+          many: Dotyczy %{count} kont w bazie danych
           one: Dotyczy jednego konta w bazie danych
           other: Dotyczy %{count} kont w bazie danych
         retroactive:
@@ -127,7 +149,7 @@ pl:
           suspend: Odwołaj zawieszenie wszystkich kont w tej domenie
         title: Odwołaj blokadę dla domeny %{domain}
         undo: Cofnij
-      title: Blokady domen
+      title: Zablokowane domeny
       undo: Cofnij
     instances:
       account_count: Znane konta
@@ -140,7 +162,7 @@ pl:
         label: Komentarz
         none: Brak
       delete: Usuń
-      id: Identyfikator
+      id: ID
       mark_as_resolved: Oznacz jako rozwiązane
       nsfw:
         'false': Nie oznaczaj jako NSFW
@@ -148,8 +170,8 @@ pl:
       report: 'Zgłoszenie #%{id}'
       report_contents: Zawartość
       reported_account: Zgłoszone konto
-      reported_by: Zgłoszone przez
-      resolved: Rozwiązano
+      reported_by: Zgłaszający
+      resolved: Rozwiązane
       silence_account: Wycisz konto
       status: Status
       suspend_account: Zawieś konto
@@ -158,6 +180,9 @@ pl:
       unresolved: Nierozwiązane
       view: Wyświetl
     settings:
+      bootstrap_timeline_accounts:
+        desc_html: Oddzielaj nazwy użytkowników przecinkami. Działa tylko dla niezablokowanych kont w obrębie instancji. Jeżeli puste, zostaną użyte konta administratorów instancji.
+        title: Domyślne obserwacje nowych użytkowników
       contact_information:
         email: Służbowy adres e-mail
         username: Nazwa użytkownika do kontaktu
@@ -175,12 +200,15 @@ pl:
         desc_html: Akapit wprowadzający, widoczny na stronie głównej i znacznikach meta. Możesz korzystać z tagów HTML, w szczególności <code>&lt;a&gt;</code> i <code>&lt;em&gt;</code>.
         title: Opis instancji
       site_description_extended:
-        desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają tą instancję. Możesz korzystać z tagów HTML
-        title: Niestandrdowy opis strony
+        desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają tę instancję. Możesz korzystać z tagów HTML
+        title: Niestandardowy opis strony
       site_terms:
-        desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz używać tagów HTML
+        desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz korzystać z tagów HTML
         title: Niestandardowe zasady użytkowania
       site_title: Nazwa instancji
+      thumbnail:
+        desc_html: 'Używana w podglądzie przez OpenGraph i API. Zalecany rozmiar: 1200x630 pikseli.'
+        title: Miniatura instancji
       timeline_preview:
         desc_html: Wyświetlaj publiczną oś czasu na stronie widocznej dla niezalogowanych
         title: Podgląd osi czasu
@@ -202,7 +230,7 @@ pl:
       with_media: Z zawartością multimedialną
     subscriptions:
       callback_url: URL zwrotny
-      confirmed: Potwierdzono
+      confirmed: Potwierdzone
       expires_in: Wygasa
       last_delivery: Ostatnio doręczono
       title: WebSub
@@ -213,11 +241,18 @@ pl:
       body: Użytkownik %{reporter} zgłosił %{target}
       subject: Nowe zgłoszenie na %{instance} (#%{id})
   application_mailer:
+    salutation: "%{name},"
     settings: 'Zmień ustawienia powiadamiania: %{link}'
     signature: Powiadomienie Mastodona z instancji %{instance}
     view: 'Zobacz:'
   applications:
-    invalid_url: Ten URL jest nieprawidłowy
+    created: Pomyślnie utworzono aplikację
+    destroyed: Pomyślnie usunięto aplikację
+    invalid_url: Wprowadzony adres URL jest nieprawidłowy
+    regenerate_token: Wygeneruj nowy token dostępu
+    token_regenerated: Pomyślnie wygenerowano nowy token dostępu
+    warning: Przechowuj te dane ostrożnie. Nie udostępniaj ich nikomu!
+    your_token: Twój token dostępu
   auth:
     agreement_html: Rejestrując się, oświadczasz, że zapoznałeś się z <a href="%{rules_path}">naszymi zasadami użytkowania</a> i <a href="%{terms_path}">polityką prywatności</a>.
     change_password: Bezpieczeństwo
@@ -225,6 +260,7 @@ pl:
     delete_account_html: Jeżeli chcesz usunąć konto, <a href="%{path}">przejdź tutaj</a>. Otrzymasz prośbę o potwierdzenie.
     didnt_get_confirmation: Nie otrzymałeś instrukcji weryfikacji?
     forgot_password: Nie pamiętasz hasła?
+    invalid_reset_password_token: Token do resetowania hasła jest nieprawidłowy lub utracił ważność. Spróbuj uzyskać nowy.
     login: Zaloguj się
     logout: Wyloguj się
     register: Rejestracja
@@ -237,10 +273,9 @@ pl:
     follow_request: 'Wysłano prośbę o pozwolenie na śledzenie:'
     following: 'Pomyślnie! Od teraz śledzisz:'
     post_follow:
-      close: Ewentualnie, możesz po prostu zamknąć tą stronę.
+      close: Ewentualnie, możesz po prostu zamknąć tę stronę.
       return: Powróć do strony użytkownika
       web: Przejdź do sieci
-    prompt_html: 'Ty (<strong>%{self}</strong>) chcesz śledzić:'
     title: Śledź %{acct}
   datetime:
     distance_in_words:
@@ -262,22 +297,25 @@ pl:
     description_html: Ta opcja usunie <strong>bezpowrotnie i nieodwracalnie</strong> całą zawartość konta i zdezaktywuje je. Twoja nazwa użytkownika pozostanie zarezerwowana, aby zapobiec nadużyciom.
     proceed: Usuń konto
     success_msg: Twoje konto zostało pomyślnie usunięte
-    warning_html: Możemy usunąć zawartość jedynie w obrębie tej instancji. Zawartość udostępniona publicznie pozostawia trwałe ślady. Serwery niepodłączone do sieci, bądź nieśledzące Twoich aktualizacji mogą zachować Twoje dane.
+    warning_html: Możemy usunąć zawartość jedynie w obrębie tej instancji. Zawartość udostępniona publicznie pozostawia trwałe ślady. Serwery niepodłączone do sieci bądź nieśledzące Twoich aktualizacji mogą zachować Twoje dane.
     warning_title: Dostępność usuniętej zawartości
   errors:
-    '403': Nie masz uprawnień, aby wyświetlić tą stronę.
+    '403': Nie masz uprawnień, aby wyświetlić tę stronę.
     '404': Strona, którą próbujesz odwiedzić, nie istnieje.
     '410': Strona, którą próbujesz odwiedzić, już nie istnieje.
     '422':
       content: Sprawdzanie bezpieczeństwa nie powiodło się. Czy blokujesz pliki cookie?
       title: Sprawdzanie bezpieczeństwa nie powiodło się
     '429': Uduszono
-    noscript: Aby korzystać z aplikacji Mastodon, włącz JavaScript. Możesz też skorzystać z natywnej aplikacji obsługującej Twoje urządzenie.
+    '500':
+      content: Przepraszamy, coś poszło nie tak…
+      title: Ta strona jest nieprawidłowa
+    noscript_html: Aby korzystać z aplikacji Mastodon, włącz JavaScript. Możesz też skorzystać z jednej z <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">natywnych aplikacji</a> obsługującej Twoje urządzenie.
   exports:
-    blocks: Blokujesz
+    blocks: Zablokowani
     csv: CSV
-    follows: Śledzisz
-    mutes: Wyciszyłeś
+    follows: Śledzeni
+    mutes: Wyciszeni
     storage: Urządzenie przechowujące dane
   followers:
     domain: Domena
@@ -336,11 +374,22 @@ pl:
       body: "%{name} poprosił o możliwość śledzenia Cię"
       subject: 'Prośba o możliwość śledzenia: %{name}'
     mention:
-      body: "%{name} wspomniał Cię w:"
-      subject: "%{name} Cię wspomniał"
+      body: "%{name} wspomniał o Tobie w:"
+      subject: "%{name} wspomniał o Tobie"
     reblog:
       body: 'Twój wpis został podbity przez %{name}:'
       subject: Twój wpis został podbity przez %{name}
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Następna
     prev: Poprzednia
@@ -359,9 +408,6 @@ pl:
       title: "%{name} wspomniał o Tobie"
     reblog:
       title: "%{name} podbił Twój status"
-    subscribed:
-      body: Otrzymujesz teraz powiadomienia push.
-      title: Zarejestrowano subskrypcję!
   remote_follow:
     acct: Podaj swój adres (nazwa@domena), z którego chcesz śledzić
     missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny
@@ -410,26 +456,34 @@ pl:
     authorized_apps: Uwierzytelnione aplikacje
     back: Powrót do Mastodona
     delete: Usuń konto
+    development: Tworzenie aplikacji
     edit_profile: Edytuj profil
-    export: Eksportuj dane
+    export: Eksportowanie danych
     followers: Autoryzowani śledzący
-    import: Importuj dane
+    import: Importowanie danych
     preferences: Preferencje
     settings: Ustawienia
     two_factor_authentication: Uwierzytelnianie dwuetapowe
+    your_apps: Twoje aplikacje
   statuses:
     open_in_web: Otwórz w przeglądarce
     over_character_limit: limit %{max} znaków przekroczony
+    pin_errors:
+      limit: Nie możesz przypiąć więcej wpisów
+      ownership: Nie możesz przypiąć cudzego wpisu
+      private: Nie możesz przypiąć niepublicznego wpisu
+      reblog: Nie możesz przypiąć podbicia wpisu
     show_more: Pokaż więcej
     visibilities:
       private: Tylko dla śledzących
-      private_long: Widoczne tylko dla śledzących
-      public: Publiczny
-      public_long: Widoczne dla wszystkich
-      unlisted: Niewypisany
+      private_long: Widoczne tylko dla osób, które Cię śledzą
+      public: Publiczne
+      public_long: Widoczne dla wszystkich użytkowników
+      unlisted: Niewypisane
       unlisted_long: Widoczne dla wszystkich, ale nie wyświetlane na publicznych osiach czasu
   stream_entries:
     click_to_show: Naciśnij aby wyświetlić
+    pinned: Przypięty wpis
     reblogged: podbił
     sensitive_content: Wrażliwa zawartość
   terms:
@@ -442,7 +496,7 @@ pl:
 
       <p>Podczas rejestracji, możesz otrzymać prośbę o podanie adresu e-mail. Możesz jednak odwiedzać stronę bez rejestracji. Adres zostanie zweryfikowany przez kliknięcie w link wysłany w wiadomości. Dzięki temu wiemy, że jesteś właścicielem tego adresu.</p>
 
-      <p>Podczas rejestracji i tworzenia postów, Twój adres IP jest zapisywany na naszych serwerach. Możemy też przechowywać adres IP użyty przy każdej operacji w serwisie.</p>
+      <p>Podczas rejestracji i tworzenia wpisów, Twój adres IP jest zapisywany na naszych serwerach. Możemy też przechowywać adres IP użyty przy każdej operacji w serwisie.</p>
 
       <h3 id="use">Jak wykorzystujemy zebrane informacje?</h3>
 
@@ -502,6 +556,8 @@ pl:
 
       <p>Tekst bazuje na <a href="https://github.com/discourse/discourse">polityce prywatności Discourse</a>.</p>
     title: Zasady korzystania i polityka prywatności %{instance}
+  themes:
+    default: Mastodon
   time:
     formats:
       default: "%b %d, %Y, %H:%M"
@@ -524,3 +580,4 @@ pl:
   users:
     invalid_email: Adres e-mail jest niepoprawny
     invalid_otp_token: Kod uwierzytelniający jest niepoprawny
+    signed_in_as: 'Zalogowany jako:'
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 68b1c549c..f2b46927b 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -1,52 +1,76 @@
 ---
 pt-BR:
   about:
-    about_mastodon_html: Mastodon é um servidor de rede social <em>grátis, e open-source</em>. Uma alternativa <em>descentralizada</em> ás plataformas comerciais, que evita o risco de uma única empresa monopolizar a sua comunicação. Escolha um servidor que você confie &mdash; qualquer um que escolher, você poderá interagir com todo o resto. Qualquer um pode ter uma instância Mastodon e assim participar na <em>rede social federada</em> sem problemas.
-    about_this: Sobre essa instância
-    closed_registrations: Registros estão fechadas para essa instância.
+    about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos e software gratuito e de código aberto. É descentralizada como e-mail.
+    about_this: Sobre
+    closed_registrations: Cadastros estão atualmente fechados nesta instância. No entanto! Você pode procurar uma instância diferente na qual possa criar uma conta e acessar a mesma rede por lá.
     contact: Contato
+    contact_missing: Não definido
+    contact_unavailable: N/A
     description_headline: O que é %{domain}?
     domain_count_after: outras instâncias
     domain_count_before: Conectado a
-    other_instances: Outras instâncias
-    source_code: Source code
-    status_count_after: status
-    status_count_before: Quem autorizou
+    extended_description_html: "<h3>Um bom lugar para as regras</h3> <p>A descrição extendida ainda não foi definida.</p>"
+    features:
+      humane_approach_body: Aprendendo com erros de outras redes, Mastodon tem como objetivo fazer decisões éticas de design para combater o desuso de redes sociais.
+      humane_approach_title: Uma abordagem mais humana
+      not_a_product_body: Mastodon não é uma rede comercial. Sem propagandas, coleta de dados, jardins fechados. Não há uma autoridade central.
+      not_a_product_title: Você é uma pessoa e não um produto
+      real_conversation_body: Com 500 caracteres à sua disposição e suporte para conteúdo granular e avisos de conteúdo, você pode se expressar da maneira que desejar.
+      real_conversation_title: Feito para conversas reais
+      within_reach_body: Vários apps para iOS, Android e outras plataformas graças a um ecossistema de API amigável para desenvolvedores proporcionam que você possa se manter atualizado sobre seus amigos de qualquer lugar.
+      within_reach_title: Sempre a seu alcance
+    find_another_instance: Encontre outra instância
+    generic_description: "%{domain} é um servidor na rede"
+    hosted_on: Mastodon hospedado em %{domain}
+    learn_more: Saiba mais
+    other_instances: Lista de instâncias
+    source_code: Código fonte
+    status_count_after: postagens
+    status_count_before: Autores de
     user_count_after: usuários
-    user_count_before: Lugar de
+    user_count_before: Casa de
+    what_is_mastodon: O que é Mastodon?
   accounts:
     follow: Seguir
     followers: Seguidores
     following: Seguindo
+    media: Mídia
     nothing_here: Não há nada aqui!
-    people_followed_by: Pessoas seguidas por %{name}
+    people_followed_by: Pessoas que %{name} segue
     people_who_follow: Pessoas que seguem %{name}
-    posts: Posts
-    remote_follow: Acesso remoto
-    unfollow: Unfollow
+    posts: Toots
+    posts_with_replies: Toots com respostas
+    remote_follow: Siga remotamente
+    reserved_username: Este usuário está reservado
+    roles:
+      admin: Administrador
+    unfollow: Deixar de seguir
   admin:
     accounts:
       are_you_sure: Você tem certeza?
-      confirm: Confirme
+      confirm: Confirmar
       confirmed: Confirmado
-      disable_two_factor_authentication: Desabilitar senha de 2 passos
-      display_name: Nome mostrado
-      domain: Domain
+      disable_two_factor_authentication: Desativar 2FA
+      display_name: Nome de exibição
+      domain: Domínio
       edit: Editar
       email: E-mail
-      feed_url: URL do Feed
+      feed_url: Feed URL
       followers: Seguidores
-      follows: Seguindo
+      follows: Segue
+      inbox_url: Inbox URL
+      ip: IP
       location:
         all: Todos
         local: Local
         remote: Remoto
-        title: Local
-      media_attachments: Mídia anexadas
+        title: Localização
+      media_attachments: Mídia(s) anexada(s)
       moderation:
         all: Todos
-        silenced: Silenciado
-        suspended: Supenso
+        silenced: Silenciados
+        suspended: Suspensos
         title: Moderação
       most_recent_activity: Atividade mais recente
       most_recent_ip: IP mais recente
@@ -55,258 +79,477 @@ pt-BR:
         alphabetic: Alfabética
         most_recent: Mais recente
         title: Ordem
-      perform_full_suspension: Fazer suspensão completa
+      outbox_url: Outbox URL
+      perform_full_suspension: Efetue suspensão total
       profile_url: URL do perfil
+      protocol: Protocolo
       public: Público
-      push_subscription_expires: PuSH subscription expires
-      reset_password: Resetar senha
+      push_subscription_expires: Inscrição PuSH expira
+      redownload: Atualizar avatar
+      reset: Anular
+      reset_password: Modificar senha
+      resubscribe: Reinscrever-se
       salmon_url: Salmon URL
+      search: Pesquisar
       show:
-        created_reports: Reports criados por esta conta
-        report: report
-        targeted_reports: Reports feitos sobre esta conta
+        created_reports: Relatórios criados por esta conta
+        report: relatórios
+        targeted_reports: Relatórios feitos sobre esta conta
       silence: Silêncio
-      statuses: Status
+      statuses: Postagens
+      subscribe: Inscrever-se
       title: Contas
-      undo_silenced: Desfazer silenciar
-      undo_suspension: Desfazer supensão
-      username: Usuário
+      undo_silenced: Retirar silêncio
+      undo_suspension: Retirar suspensão
+      unsubscribe: Desinscrever-se
+      username: Nome de usuário
       web: Web
     domain_blocks:
-      add_new: Adicionar nova
-      created_msg: Bloqueio do domínio está sendo processado
-      destroyed_msg: Bloqueio de domínio está sendo desfeito
+      add_new: Adicionar novo
+      created_msg: Bloqueio de domínio está sendo processado
+      destroyed_msg: Bloqueio de domínio desfeito
       domain: Domínio
       new:
         create: Criar bloqueio
-        hint: O bloqueio de dominio não vai previnir a criação de entradas no banco de dados, mas irá, retroativamente e automaticamente aplicar métodos de moderação específica nessas contas.
+        hint: O bloqueio de domínio não prevenirá a criação de entradas de contas na base de dados, mas vai reatroativa e automaticamente aplicar métodos específicos de moderação nestas contas.
         severity:
-          desc_html: "<strong>Silenciar</strong> irá fazer com que os posts dessas contas sejam invisíveis para todos que não a seguem. <strong>Supender</strong> irá remover todos o conteúdo das contas, mídia e dados do perfil."
-          silence: Silenciar
-          suspend: Suspender
+          desc_html: O <strong>Silêncio</strong> fará com que as postagens da conta fiquem invisíveis para qualquer um que não a esteja seguindo. A <strong>Suspensão</strong> removerá todo o conteúdo da conta, mídia e dados de perfil. Use <strong>Nenhum</strong> se você apenas deseja rejeitar arquivos de mídia.
+          noop: Nenhum
+          silence: Silêncio
+          suspend: Suspensão
         title: Novo bloqueio de domínio
       reject_media: Rejeitar arquivos de mídia
-      reject_media_hint: Remove localmente arquivos armazenados e rejeita fazer o download de novos no futuro. Irrelevante em suspensões.
+      reject_media_hint: Remove arquivos de mídia armazenados localmente e recusa quaisquer outros no futuro. Irrelevante para suspensões.
       severities:
-        silence: Silenciar
-        suspend: Suspender
-      severity: Severidade
+        noop: Nenhum
+        silence: Silêncio
+        suspend: Suspensão
+      severity: Rigidez
       show:
         affected_accounts:
-          one: Uma conta no banco de dados afetada
-          other: "%{count} contas no banco de dados afetada"
+          one: Uma conta no banco de dados foi afetada
+          other: "%{count} contas no banco de dados foram afetadas"
         retroactive:
-          silence: Desilenciar todas as contas existentes nesse domínio
-          suspend: Desuspender todas as contas existentes nesse domínio
-        title: Desfazer bloqueio de domínio para %{domain}
-      title: Bloqueio de domínio
-      undo: Desfazer
+          silence: Retirar silêncio de todas as contas existentes neste domínio
+          suspend: Retirar suspensão de todas as contas neste domínio
+        title: Retirar bloqueio de domínio de %{domain}
+        undo: Retirar
+      title: Bloqueios de domínio
+      undo: Retirar
     instances:
       account_count: Contas conhecidas
       domain_name: Domínio
       title: Instâncias conhecidas
     reports:
+      action_taken_by: Ação realizada por
+      are_you_sure: Você tem certeza?
       comment:
-        label: Commentário
-        none: None
-      delete: Deletar
+        label: Comentário
+        none: Nenhum
+      delete: Excluir
       id: ID
-      mark_as_resolved: Marque como resolvido
-      report: 'Report #%{id}'
-      report_contents: Conteúdo
+      mark_as_resolved: Marcar como resolvido
+      nsfw:
+        'false': Mostrar mídias anexadas
+        'true': Esconder mídias anexadas
+      report: 'Reportar #%{id}'
+      report_contents: Conteúdos
       reported_account: Conta reportada
-      reported_by: Reportado por
+      reported_by: Reportada por
       resolved: Resolvido
-      silence_account: Conta silenciada
+      silence_account: Silenciar conta
       status: Status
-      suspend_account: Conta suspensa
-      target: Target
-      title: Reports
-      unresolved: Unresolved
-      view: View
+      suspend_account: Suspender conta
+      target: Alvo
+      title: Denúncias
+      unresolved: Não resolvido
+      view: Visualizar
     settings:
+      bootstrap_timeline_accounts:
+        desc_html: Separe nomes de usuário através de vírgulas. Funciona apenas com contas locais e destrancadas. O padrão quando vazio são todos os administradores locais.
+        title: Usuários a serem seguidos por padrão por novas contas
       contact_information:
-        email: Entre um endereço de email público
-        username: Entre com usuário
+        email: E-mail
+        username: Contate usuário
       registrations:
         closed_message:
-          desc_html: Mostrar na página inicial quando registros estão fecados<br/>Você pode usar tags HTML
-          title: Mensagem de registro fechados
+          desc_html: Exibido na página inicial quando cadastros estão fechados. Você pode usar tags HTML.
+          title: Mensagem de cadastros fechados
+        deletion:
+          desc_html: Permitir que qualquer um delete a sua conta
+          title: Exclusão aberta de contas
         open:
-          title: Aberto para registro
+          desc_html: Permitir que qualquer um crie uma conta
+          title: Cadastro aberto
       site_description:
-        desc_html: Mostrar como parágrafo e usado como meta tag.<br/>Vôce pode usar tags HTML, em particular <code>&lt;a&gt;</code> e <code>&lt;em&gt;</code>.
-        title: Descrição do site
+        desc_html: Parágrafo introdutório na página inicial e em meta tags. Você pode usar tags HTML, em especial <code>&lt;a&gt;</code> e <code>&lt;em&gt;</code>.
+        title: Descrição da instância
       site_description_extended:
-        desc_html: Mostrar na página de informação extendiada <br/>Você pode usar tags HTML
-        title: Descrição extendida do site
-      site_title: Título do site
-      title: Preferências do site
+        desc_html: Um ótimo lugar para seu código de conduta, regras, diretrizes e outras coisas para diferenciar a sua instância. Você pode usar tags HTML.
+        title: Informação estendida customizada
+      site_terms:
+        desc_html: Você pode escrever a sua própria política de privacidade, termos de serviço, entre outras coisas.Você pode usar tags HTML.
+        title: Termos de serviço customizados
+      site_title: Nome da instância
+      timeline_preview:
+        desc_html: Exibir a timeline pública na página inicial
+        title: Prévia da timeline
+      title: Configurações do site
+    statuses:
+      back_to_account: Voltar para página da conta
+      batch:
+        delete: Deletar
+        nsfw_off: NSFW OFF
+        nsfw_on: NSFW ON
+      execute: Executar
+      failed_to_execute: Falha em executar
+      media:
+        hide: Esconder mídia
+        show: Mostrar mídia
+        title: Mídia
+      no_media: Não há mídia
+      title: Postagens da conta
+      with_media: Com mídia
     subscriptions:
-      callback_url: URL de Callback
+      callback_url: Callback URL
       confirmed: Confirmado
       expires_in: Expira em
       last_delivery: Última entrega
       title: WebSub
       topic: Tópico
     title: Administração
+  admin_mailer:
+    new_report:
+      body: "%{reporter} reportou %{target}"
+      subject: Nova denúncia sobre %{instance} (#%{id})
   application_mailer:
-    settings: 'Mudar preferências de email: %{link}'
-    signature: notificações Mastodon de %{instance}
-    view: 'View:'
+    salutation: "%{name},"
+    settings: 'Change e-mail preferences: %{link}'
+    signature: Notificações do Mastodon de %{instance}
+    view: 'Visualizar:'
   applications:
-    invalid_url: URL dada é inválida
+    created: Aplicação criada com sucesso
+    destroyed: Aplicação excluída com sucesso
+    invalid_url: A URL provida é inválida
+    regenerate_token: Regenerar token de acesso
+    token_regenerated: Token de acesso renegerado com sucesso
+    warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém!
+    your_token: Seu token de acesso
   auth:
-    change_password: Mudar senha
+    agreement_html: Cadastrando-se você concorda com <a href="%{rules_path}">nossos termos de serviço</a> e <a href="%{terms_path}">política de privacidade</a>.
+    change_password: Segurança
+    delete_account: Excluir conta
+    delete_account_html: Se você deseja excluir a sua conta, você pode <a href="%{path}">prosseguir para cá</a>. Uma confirmação será requisitada.
     didnt_get_confirmation: Não recebeu instruções de confirmação?
-    forgot_password: Esqueceu a senha?
+    forgot_password: Esqueceu a sua senha?
+    invalid_reset_password_token: Token de modificação de senha é inválido ou expirou. Por favor, requisite um novo.
     login: Entrar
     logout: Sair
-    register: Registar
+    register: Cadastrar-se
     resend_confirmation: Reenviar instruções de confirmação
-    reset_password: Resetar senha
-    set_new_password: Editar password
+    reset_password: Modificar senha
+    set_new_password: Definir uma nova senha
   authorize_follow:
-    error: Infelizmente houve um erro olhando uma conta remota
+    error: Infelizmente, ocorreu um erro quando visualizando a conta remota.
     follow: Seguir
-    prompt_html: 'Você (<strong>%{self}</strong>) pediu pra seguir:'
+    follow_request: 'Você mandou uma solicitação de seguidor para:'
+    following: 'Sucesso! Você agora está seguindo:'
+    post_follow:
+      close: Ou você pode simplesmente fechar esta janela.
+      return: Retornar ao perfil do usuário
+      web: Voltar para a página inicial
     title: Seguir %{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_months: "%{count} meses"
+      about_x_years: "%{count} anos"
+      almost_x_years: "%{count} anos"
       half_a_minute: Agora
-      less_than_x_minutes: "%{count}m"
+      less_than_x_minutes: "%{count} meses"
       less_than_x_seconds: Agora
-      over_x_years: "%{count}y"
-      x_days: "%{count}d"
-      x_minutes: "%{count}m"
-      x_months: "%{count}mo"
-      x_seconds: "%{count}s"
+      over_x_years: "%{count} anos"
+      x_days: "%{count} dias"
+      x_minutes: "%{count} minutos"
+      x_months: "%{count} meses"
+      x_seconds: "%{count} segundos"
+  deletes:
+    bad_password_msg: Boa tentativa, hackers! Senha incorreta.
+    confirm_password: Insira a sua senha atual para verificar a sua identidade
+    description_html: Isto vai <strong>permanente e irreversivelmente</strong> remover conteúdo de sua conta e desativá-la. O seu nome de usuário permanecerá reservado para previnir futuros roubos de identidade.
+    proceed: Excluir conta
+    success_msg: A sua conta foi excluída com sucesso
+    warning_html: Apenas a exclusão de conteúdo desta instância em particular é garantida. Conteúdo que tenha sido largamente compartilhado muito provavelmente deixará traços. Servidores offline e servidores que se desinscreveram de suas atualizações não irão atualizar as suas bases de dados.
+    warning_title: Disponibilidade de conteúdo disseminado
   errors:
-    '403': Você não tem permissão para ver essa página.
-    '404': A página que você procura não existe.
-    '410': A página que você procura não existe mais.
+    '403': Você não tem permissão para ver esta página.
+    '404': A página pela qual você está procurando não existe.
+    '410': A página pela qual você está procurando não existe mais.
     '422':
-      content: Verificação de segurança falhou. Você está bloqueando cookies?
-      title: Verificação de segurança falhou
+      content: A verificação de segurança falhou. Você desativou o uso de cookies?
+      title: Falha na verificação de segurança
+    '429': Muitas requisições
+    noscript_html: Para usar o aplicativo web do Mastodon, por favor ative o JavaScript. Alternativamente, experimente um dos <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">apps nativos</a> para o Mastodon para a sua plataforma.
   exports:
-    blocks: Você bloqueia
+    blocks: Você bloqueou
     csv: CSV
     follows: Você segue
-    mutes: Você selencia
-    storage: Mídia de dados
+    mutes: Você silenciou
+    storage: Armazenamento de mídia
   followers:
     domain: Domínio
-    explanation_html: Se você quer garantir a privacidade doe seu status, você precisa saber quem te segue. <strong>Seu status privado é enviado a todas as instancias que você tem seguidores</strong>. Você pode querer reavaliar e remover os seguidores que você não confia que sua privacidade vai ser mantida pelos administradores ou softwares de outras instancias.
-    followers_count: Númbero de seguidores
-    lock_link: Bloquear sua conta
-    purge: Remove dos seguidores
+    explanation_html: Se você quer garantir a privacidade de suas postagens, você deve ficar atento a quem está te seguindo.<strong>Suas postagens privadas são enviadas para todas as instâncias em que você tem seguidores</strong>. Convém revisá-las e remover seguidores se você acredita que a sua privacidade não será respeitada pela equipe ou software destas instâncias.
+    followers_count: Número de seguidores
+    lock_link: Tranque a sua conta
+    purge: Remover de seus seguidores
     success:
-      one: Em processo de bloquear seguidores de um domínio...
-      other: Em processo de bloqueio-leve dos seguidores de %{count} domínios...
-    true_privacy_html: Saiba que <strong>privaicade de verdade só pode ser atingida com criptografia ponto-a-ponto</strong>.
-    unlocked_warning_html: Qualquer um que te seguir para ver seus status privado imediatamente. %{lock_link} para poder rever e rejeitar seguidores.
-    unlocked_warning_title: Sua conta não está bloqueada
+      one: No processo de bloqueio suave de seguidores de outro domínio...
+      other: No processo de bloqueio suave de seguidores de outros %{count} domínios...
+    true_privacy_html: Lembre-se de que <strong>a verdadeira privacidade só pode ser alcançada através de encriptação ponto-a-ponto</strong>.
+    unlocked_warning_html: Qualquer pessoa pode te seguir e ver as suas postagens privadas. %{lock_link} para ser capaz de revisar e rejeitar seguidores.
+    unlocked_warning_title: A sua conta não está trancada
   generic:
-    changes_saved_msg: Mudanças guardadas!
+    changes_saved_msg: Mudanças salvas com sucesso!
     powered_by: powered by %{link}
-    save_changes: Guardar alterações
+    save_changes: Salvar mudanças
     validation_errors:
-      one: Algo não está correto. Por favor reveja o erro abaixo
-      other: Algo não está correto. Por favor reveja os %{count} erros abaixo
+      one: Algo não está certo! Por favor, reveja o erro abaixo
+      other: Algo não está certo! Por favor, reveja os %{count} erros abaixo
   imports:
-    preface: Você pode importar certos dados, como as pessoas que você segue ou estão bloqueadas para sua conta nessa instancia, de arquivos com dados criados por outra instancia.
-    success: Seus dados foram carregados com sucesso and serão processados em algum tempo
+    preface: Você pode importar dados que você exportou de outra instância, como a lista de pessoas que você segue ou bloqueou.
+    success: Os seus dados foram enviados com sucesso e serão processados em instantes
     types:
       blocking: Lista de bloqueio
-      following: Lista de seguidos
-      muting: Lista de silenciados
-    upload: Carregar
-  landing_strip_html: "<strong>%{name}</strong> is a user on %{link_to_root_path}. You can follow them or interact with them if you have an account anywhere in the fediverse."
-  landing_strip_signup_html: If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
+      following: Pessoas que você segue
+      muting: Lista de silêncio
+    upload: Enviar
+  landing_strip_html: "<strong>%{name}</strong> é um usuário no %{link_to_root_path}. Você pode segui-lo ou interagir com ele se você tiver uma conta em qualquer lugar no fediverso."
+  landing_strip_signup_html: Se não, você pode <a href="%{sign_up_path}">se cadastrar aqui</a>.
   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
+      images_and_video: Não é possível anexar um vídeo a uma postagem que já contém imagens.
+      too_many: Não é possível anexar mais de quatro imagens.
   notification_mailer:
     digest:
-      body: 'Isto é um resumo do que você perdeu em %{instance} desde sua última visita %{since}:'
-      mention: "%{name} mencionou você em:"
+      body: 'Aqui está um resumo do que você perdeu no %{instance} desde o seu último acesso em %{since}:'
+      mention: "%{name} te mencionou em:"
       new_followers_summary:
-        one: Você tem um novo seguidor!
-        other: Você conseguiu %{count} novos seguidores! Incrível
+        one: Você tem um novo seguidor! Yay!
+        other: Você tem %{count} novos seguidores! Maravilha!
       subject:
-        one: "1 nova notificação desde sua última visita \U0001F418"
-        other: "%{count} novas notificações desde a última visita \U0001F418"
+        one: "Uma nova notificação desde o seu último acesso \U0001F418"
+        other: "%{count} novas notificações desde o seu último acesso \U0001F418"
     favourite:
-      body: 'O seu post foi favoritado por %{name}:'
-      subject: "%{name} favouritou o seu post"
+      body: 'Sua postagem foi favoritada por %{name}:'
+      subject: "%{name} favoritou a sua postagem"
     follow:
-      body: "%{name} seguiu você!"
-      subject: "%{name} segue você"
+      body: "%{name} está te seguindo!"
+      subject: "%{name} está te seguindo"
     follow_request:
-      body: "%{name} pediu para te seguir"
-      subject: 'Seguidor pendente: %{name}'
+      body: "%{name} requisitou autorização para te seguir"
+      subject: 'Pending follower: %{name}'
     mention:
       body: 'Você foi mencionado por %{name} em:'
-      subject: Foi mencionado por %{name}
+      subject: Você foi mencionado por %{name}
     reblog:
-      body: 'O seu post foi reblogado por %{name}:'
-      subject: "%{name} reblogou o seu post"
+      body: 'Sua postagem foi compartilhada por %{name}:'
+      subject: "%{name} compartilhou a sua postagem"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
-    next: Next
-    prev: Prev
+    next: Próximo
+    prev: Anterior
     truncate: "&hellip;"
+  push_notifications:
+    favourite:
+      title: "%{name} favoritou a sua postagem"
+    follow:
+      title: "%{name} está te seguindo"
+    group:
+      title: "%{count} notificações"
+    mention:
+      action_boost: Compartilhar
+      action_expand: Mostrar mais
+      action_favourite: Favoritar
+      title: "%{name} mencionou você"
+    reblog:
+      title: "%{name} compartilhou a sua postagem"
   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
-    proceed: Prossiga para seguir
-    prompt: 'Você vai seguir:'
+    acct: Insira o seu usuário@domínio do qual você quer seguir
+    missing_resource: Não foi possível encontrar a URL de direcionamento para a sua conta
+    proceed: Prosseguir para seguir
+    prompt: 'Você irá seguir:'
+  sessions:
+    activity: Última atividade
+    browser: Navegador
+    browsers:
+      alipay: Alipay
+      blackberry: Blackberry
+      chrome: Chrome
+      edge: Microsoft Edge
+      firefox: Firefox
+      generic: Unknown browser
+      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: 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: unknown platform
+      windows: Windows
+      windows_mobile: Windows Mobile
+      windows_phone: Windows Phone
+    revoke: Revogar
+    revoke_success: Sessão revogada com sucesso
+    title: Sessões
   settings:
-    authorized_apps: Aplicativos autorizados
-    back: Voltar ao Mastodon
+    authorized_apps: Apps autorizados
+    back: Voltar para o Mastodon
+    delete: Exclusão de conta
+    development: Desenvolvimento
     edit_profile: Editar perfil
-    export: Importar dados
+    export: Exportar dados
     followers: Seguidores autorizados
     import: Importar
     preferences: Preferências
-    settings: Settings
-    two_factor_authentication: Autenticação Two-factor
+    settings: Configurações
+    two_factor_authentication: Autenticação em dois passos
+    your_apps: Seus aplicativos
   statuses:
-    open_in_web: Abrir no browser
-    over_character_limit: limite de caracter excedeu %{max}
+    open_in_web: Abrir na web
+    over_character_limit: limite de caracteres de %{max} excedido
+    pin_errors:
+      ownership: Toots de outras pessoas não podem ser fixados
+      private: Toot não-público não pode ser fixado
+      reblog: Um compartilhamento não pode ser fixado
     show_more: Mostrar mais
     visibilities:
-      private: Seguidores-apenas
+      private: Apenas seguidores
       private_long: Mostrar apenas para seguidores
       public: Público
-      public_long: Qualquer um pode ver
-      unlisted: Público, mas não mostre no timeline público
-      unlisted_long: Todo mundo pode ver mas não será listado nas timeline públicas
+      public_long: Todos podem ver
+      unlisted: Não listado
+      unlisted_long: Todos podem ver, porém não será postado nas timelines públicas
   stream_entries:
-    click_to_show: Clique pra mostrar
-    reblogged: boosted
+    click_to_show: Clique para mostrar
+    pinned: Toot fixado
+    reblogged: compartilhado
     sensitive_content: Conteúdo sensível
+  terms:
+    body_html: |
+      <h2>Política de privacidade</h2>
+
+      <h3 id="collect">Que informações nós coletamos?</h3>
+
+      <p>Coletamos informações quando você se cadastra em nosso site e capturamos dados quando você participa do fórum lendo, escrevendo e analisando o conteúdo aqui compartilhado.</p>
+
+      <p>Quando você se registrar em nosso site, será requisitado que você ceda seu nome e endereço de e-mail. Você pode, porém, visitar nosso site sem se cadastrar. Seu endereço de e-mail será verificado por uma mensagem contendo um link único. Se este link for visitado, saberemos que você controla este endereço de e-mail.</p>
+
+      <p>Quando registrado e postando, nós gravamos o endereço de IP de onde a postagem se originou. Nós também podemos reter logs de serviores que incluem o endereço de IP em cada requisição para o nosso servidor.</p>
+
+      <h3 id="use">Para que usamos essas informações?</h3>
+
+      <p>Quaisquer das informações que coletamos podem ser usadas das seguintes formas:</p>
+
+      <ul>
+        <li>Para personalizar a sua experiência &mdash; suas informações nos ajudam a nos adequar melhor às suas necessidades individuais.</li>
+        <li>Para melhorar nosso site &mdash; nós continuamente nos esforçamos para aprimorar nosso site baseados na informação e no feedback que recebemos de você.</li>
+        <li>Para aprimorar o serviço ao consumidor &mdash; suas informações nos ajudam a responder efetivamente às suas requisições e solicitações por suporte.</li>
+        <li>Para mandar e-mails periódicos &mdash; O endereço de e-mail que você forneceu pode ser usado para lhe enviar informações, notificações que você requisitar sobre mudanças a determinados tópicos ou menções ao seu nome de usuário, responder requisições e/ou solicitações e perguntas.</li>
+      </ul>
+
+      <h3 id="protect">Como protegemos as suas informações?</h3>
+
+      <p>Nós implementamos uma variedade de medidas de segurança para manter a segurança de suas informações pessoais quando você insere, submete ou acessa as suas informações pessoais.</p>
+
+      <h3 id="data-retention">Qual a sua política de retenção de dados?</h3>
+
+      <p>Faremos esforços de boa fé para:</p>
+
+      <ul>
+        <li>Reter logs de servidor contendo o endereço IP de todas as requisições a este servidor por não mais que 90 dias.</li>
+        <li>Reter os endereços IP associados a usuários cadastrados e suas postagens por não mais que 5 anos.</li>
+      </ul>
+
+      <h3 id="cookies">Nós usamos cookies?</h3>
+
+      <p>Sim. Cookies são pequenos arquivos que um site ou o provedor de serviço transfere para o armazenamento interno de seu computador através de seu navegador (se você permitir). Estes cookies habilitam o site para reconhecer o seu navegador e, se você ter um cadastro, associá-lo a esta conta.</p>
+
+      <p>Nós usamos cookies para entender e salvar as suas preferências para futuras visitas e compilar dados agregados sobre o tráfego do site para que possamos oferecer melhores experiências e ferramentas no futuro. Nós podemos contratar serviços de terceiros para nos auxiliar a entender melhor nossos visitantes. Estes provedores de serviço não são autoriza usar as informações coletadas em nosso nome exceto para nos ajudar a conduzir e aprimorar nosso funcionamento.</p>
+
+      <h3 id="disclose">Nós revelamos informações para terceiros?</h3>
+
+      <p>Nós não vendemos, tocamos ou transferimos para terceiros informações pessoais que te identificam. Isso não inclui partes em que confiamos para nos ajudar a operar nosso site, conduzir nosso funcionamento ou servir você desde que estes terceiros concordem em manter essas informações em segredo. Nós também podemos prover as suas informações para obedecer ordens judiciais, reforçar nossas políticas ou proteger nossos direitos ou de outrem, propriedades ou segurança. Entretanto, informações pessoais não identificáveis podem ser enviadas para outras partes para marketing, propaganda e outros usos.</p>
+
+      <h3 id="third-party">Links de terceiros</h3>
+
+      <p>Ocasionalmente, à nossa discrição, podemos icluir ou oferecer produtos ou serviços de terceiros em nosso site. Estes terceiros têm políticas de privacidade separadas e independentes. Nós, portanto, não nos responsabilizamos pelo conteúdo e atividades destes sites de terceiros. Occasionally, at our discretion, we may include or offer third party products or services on our site. Não obstante, nós procuramos proteger a integridade de nosso site e todo feedback sobre estes sites de terceiros é bem-vindo.</p>
+
+      <h3 id="coppa">Obediência ao Ato de Proteção da Privacidade Online de Crianças</h3>
+
+      <p>Nosso site, produtos e serviços são todos direcionados a pessoas que têm pelo menos 13 anos de idade. Se este servidor estiver nos EUA, e você tiver menos de 13 anos, pelos requerimentos da COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children's Online Privacy Protection Act</a>) não use este site.</p>
+
+      <h3 id="online">Política de Apenas Privacidade Online</h3>
+
+      <p>Esta política de privacidade online se aplica somente a informações coletadas por nosso site e não a informações coletadas offline.</p>
+
+      <h3 id="consent">Seu Consentimento</h3>
+
+      <p>Usando o nosso site, você concorda com a nossa política de privacidade.</p>
+
+      <h3 id="changes">Mudanças em nossa Política de Privacidade</h3>
+
+      <p>Se decidirmos mudar a nossa política de privacidade, publicaremos as mudanças nesta página.</p>
+
+      <p>Este documento é CC-BY-SA. A sua última atualização aconteceu em 31 de maio de 2013.</p>
+
+      <p>Originalmente adaptado da <a href="https://github.com/discourse/discourse">política de privacidade do Discourse</a>.</p>
+    title: "%{instance} Termos de Serviço e Política de Privacidade"
   time:
     formats:
-      default: "%d %b, %Y, %H:%M"
+      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
-    code_hint: Entre o código gerado pelo seu aplicativo para confirmar
-    description_html: Se você habilitar <strong>autenticação two-factor </strong>, quando logar será necessário o seu telefone que vai gerar os tokens usado.
-    disable: Disabilitar
-    enable: Habilitar
-    enabled_success: Autenticador Two-factor habilitador com sucesso
-    generate_recovery_codes: Gerar códigos para recuperar conta
-    instructions_html: "<strong>Scaneie este código QR no seu Google Authenticator ou aplicativo similar no seu telefone</strong>. A partir de agora seu aplicativo irá gerar tokens que deverão ser digitados para você logar."
-    lost_recovery_codes: Códigos de recuperação permite que você recupere o acesso a sua conta se você perder seu telefone. Se você perder os códigos de recuperação, você pode regera-los aqui. Seus códigos antigos serão invalidados.
-    manual_instructions: 'Se você não puder scanear o código QR e precisa digita-los manualmente, aqui está o segredo em texto.:'
-    recovery_codes_regenerated: Códigos de recuperação foram gerados com sucesso
-    recovery_instructions_html: Se algum dia você perder o acesso ao seu telefone, você pode usar um dos códigos de abaixo para recupera o acesso a sua conta. Guarde os códigos de acesso em local seguro, por exemplo imprimindo ou guardados com documentos importantes.
+    code_hint: Insira o código gerado pelo seu aplicativo auteticador para confirmar
+    description_html: Se você ativar a <strong>autenticação em dois passos</strong>, o acesso à sua conta exigirá posse de seu celular, que irá gerar tokens para validação.
+    disable: Desativar
+    enable: Ativar
+    enabled: A autenticação em dois passos está ativada
+    enabled_success: Autenticação em dois passos ativada com sucesso
+    generate_recovery_codes: Gerar códigos de recuperação
+    instructions_html: "<strong>Escaneie este QR Code no Google Authenticator ou aplicativo TOTP similar com o seu celular</strong>. De agora em diante, este aplicativo irá gerar tokens que você terá que inserir quando desejar acessar a sua conta."
+    lost_recovery_codes: Códigos de recuperação permitem que você recupere acesso à sua conta caso perca o seu celular. Se você perdeu seus códigos de recuperação, você pode gerá-los novamente aqui. Seus códigos de recuperaçãp anteriores serão invalidados.
+    manual_instructions: 'Se você não pode escanear o QR code e precisa inserí-lo manualmente, aqui está o segredo em texto:'
+    recovery_codes: Códigos de recuperação de reserva
+    recovery_codes_regenerated: Códigos de recuperação regenerados com sucesso
+    recovery_instructions_html: Se você perder acesso ao seu celular, você pode usar um dos códigos de recuperação abaixo para reganhar acesso à sua conta. <strong>Mantenha os códigos de recuperação em um local seguro</strong>. Por exemplo, você pode imprimi-los e guardá-los com outros documentos importantes.
     setup: Configurar
-    wrong_code: O código digitado é inválido! Os relógios do servidor e do dispositivo estão corretos?
+    wrong_code: O código inserido é invalido! O horário do servidor e o horário do seu aparelho estão corretos?
   users:
-    invalid_email: Endereço e-mail inválido
-    invalid_otp_token: Código two-factor inválido
+    invalid_email: O endereço de e-mail é inválido
+    invalid_otp_token: Código de autenticação inválido
+    signed_in_as: 'Acesso como:'
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index f6dd32200..140f6b71b 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -182,6 +182,17 @@ pt:
     reblog:
       body: 'O teu post foi partilhado por %{name}:'
       subject: "%{name} partilhou o teu post"
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: B
+          million: M
+          quadrillion: Q
+          thousand: K
+          trillion: T
+          unit: ''
   pagination:
     next: Seguinte
     prev: Anterior
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 348f670b5..9ca08831e 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -162,7 +162,6 @@ ru:
   authorize_follow:
     error: К сожалению, при поиске удаленного аккаунта возникла ошибка
     follow: Подписаться
-    prompt_html: 'Вы (<strong>%{self}</strong>) запросили подписку:'
     title: Подписаться на %{acct}
   datetime:
     distance_in_words:
@@ -194,7 +193,7 @@ ru:
       content: Проверка безопасности не удалась. Возможно, Вы блокируете cookies?
       title: Проверка безопасности не удалась.
     '429': Слишком много запросов
-    noscript: Для работы с Mastodon, пожалуйста, включите JavaScript.
+    noscript_html: Для работы с Mastodon, пожалуйста, включите JavaScript.
   exports:
     blocks: Список блокировки
     csv: CSV
@@ -263,25 +262,33 @@ ru:
     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;"
   push_notifications:
     favourite:
-      title: "Ваш статус понравился %{name}"
+      title: Ваш статус понравился %{name}
     follow:
       title: "%{name} теперь подписан(а) на Вас"
     mention:
       action_boost: Продвинуть
       action_expand: Развернуть
       action_favourite: Нравится
-      title: "Вас упомянул(а) %{name}"
+      title: Вас упомянул(а) %{name}
     reblog:
       title: "%{name} продвинул(а) Ваш статус"
-    subscribed:
-      body: Теперь Вы можете получать push-уведомления.
-      title: Подписка зарегистрирована!
   remote_follow:
     acct: Введите username@domain, откуда Вы хотите подписаться
     missing_resource: Поиск требуемого перенаправления URL для Вашего аккаунта завершился неудачей
@@ -351,7 +358,7 @@ ru:
     reblogged: продвинул(а)
     sensitive_content: Чувствительный контент
   terms:
-    title: "Условия обслуживания и политика конфиденциальности %{instance}"
+    title: Условия обслуживания и политика конфиденциальности %{instance}
   time:
     formats:
       default: "%b %d, %Y, %H:%M"
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index b2b33c8ff..932b166d7 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -4,10 +4,10 @@ ar:
     hints:
       defaults:
         avatar: PNG, GIF أو JPG. على الأكثر 2 ميغابيت . سوف يتم تصغيرها إلى 120x120px
-        display_name: '<span class="name-counter">%{count}</span> أحرف متبقية'
+        display_name: <span class="name-counter">%{count}</span> أحرف متبقية
         header: PNG, GIF or JPG. على الأكثر 2 ميغابيت . سوف يتم تصغيرها إلى 700x335px
         locked: يتطلب منك الموافقة يدويا على كل طلب للإشتراك بحسابك و منشوراتك تعرض لمتابعيك فقط دون غيرهم
-        note: '<span class="note-counter">%{count}</span> أحرف متبقية'
+        note: <span class="note-counter">%{count}</span> أحرف متبقية
       imports:
         data: ملف CSV تم تصديره من خادوم مثيل  آخر لماستدون
       sessions:
diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml
index 55b80277d..2ea70d51c 100644
--- a/config/locales/simple_form.bg.yml
+++ b/config/locales/simple_form.bg.yml
@@ -39,8 +39,8 @@ bg:
         follow_request: Изпращай e-mail, когато някой пожелае да те последва
         mention: Изпращай e-mail, когато някой те спомене
         reblog: Изпращай e-mail, когато някой сподели твоя публикация
-    'no': 'Не'
+    'no': Не
     required:
       mark: "*"
       text: задължително
-    'yes': 'Да'
+    'yes': Да
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index 7bcc21e66..b5b7f26d2 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -8,8 +8,8 @@ ca:
           one: <span class="name-counter">1</span> character left
           other: <span class="name-counter">%{count}</span> characters left
         header: PNG, GIF o JPG. Màxim 2MB. Serà escalat a 700x335px
-        locked: Requereix que aprovis manualment seguidors i les publicacions seran mostrades només als teus seguidors 
-        note: 
+        locked: Requereix que aprovis manualment seguidors i les publicacions seran mostrades només als teus seguidors
+        note:
           one: <span class="note-counter">1</span> character left
           other: <span class="note-counter">%{count}</span> characters left
       imports:
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 85ec0e4fc..a6ba839c6 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -4,10 +4,10 @@ de:
     hints:
       defaults:
         avatar: PNG, GIF oder JPG. Maximal 2MB. Wird auf 120x120px herunterskaliert
-        display_name: '<span class="name-counter">%{count}</span> Zeichen verbleiben'
+        display_name: <span class="name-counter">%{count}</span> Zeichen verbleiben
         header: PNG, GIF oder JPG. Maximal 2MB. Wird auf 700x335px herunterskaliert
-        locked: Erlaubt dir, Nutzer zu überprüfen, bevor sie dir folgen können
-        note: '<span class="note-counter">%{count}</span> Zeichen verbleiben'
+        locked: Erlaubt dir, Profile zu überprüfen, bevor sie dir folgen können
+        note: <span class="note-counter">%{count}</span> Zeichen verbleiben
       imports:
         data: CSV-Datei, die von einer anderen Mastodon-Instanz exportiert wurde
       sessions:
@@ -33,10 +33,10 @@ de:
         setting_default_privacy: Beitragsprivatspäre
         severity: Gewichtung
         type: Importtyp
-        username: Nutzername
+        username: Profilname
       interactions:
         must_be_follower: Benachrichtigungen von Nicht-Folgern blockieren
-        must_be_following: Benachrichtigungen von Nutzern blockieren, denen ich nicht folge
+        must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge
       notification_emails:
         digest: Schicke Übersichts-E-Mails
         favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert
@@ -44,8 +44,8 @@ de:
         follow_request: E-Mail senden, wenn mir jemand folgen möchte
         mention: E-Mail senden, wenn mich jemand erwähnt
         reblog: E-Mail senden, wenn jemand meinen Beitrag teilt
-    'no': 'Nein'
+    'no': Nein
     required:
       mark: "*"
       text: Pflichtfeld
-    'yes': 'Ja'
+    'yes': Ja
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index fb8524a24..f9d4e2e52 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -13,6 +13,7 @@ en:
           one: <span class="note-counter">1</span> character left
           other: <span class="note-counter">%{count}</span> characters left
         setting_noindex: Affects your public profile and status pages
+        setting_theme: Affects how Mastodon looks when you're logged in from any device.
       imports:
         data: CSV file exported from another Mastodon instance
       sessions:
@@ -44,6 +45,7 @@ en:
         setting_noindex: Opt-out of search engine indexing
         setting_system_font_ui: Use system's default font
         setting_unfollow_modal: Show confirmation dialog before unfollowing someone
+        setting_theme: Site theme
         severity: Severity
         type: Import type
         username: Username
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index 7c501bb93..a3824d349 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -39,8 +39,8 @@ eo:
         follow_request: Sendi retpoŝt-mesaĝon, kiam iu petas sekvi vin
         mention: Sendi retpoŝt-mesaĝon, kiam iu mencias vin
         reblog: Sendi retpoŝt-mesaĝon, kiam iu diskonigas mesaĝon de vi
-    'no': 'Ne'
+    'no': Ne
     required:
       mark: "*"
       text: bezonata
-    'yes': 'Jes'
+    'yes': Jes
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index f260e600c..63a0710d1 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -4,12 +4,21 @@ es:
     hints:
       defaults:
         avatar: PNG, GIF o JPG. Máximo 2MB. Será escalado a 120x120px
-        display_name: Máximo 30 caracteres
+        display_name:
+          one: <span class="name-counter">1</span> caracter restante
+          other: <span class="name-counter">%{count}</span> caracteres restantes
         header: PNG, GIF o JPG. Máximo 2MB. Será escalado a 700x335px
-        locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores 
-        note: Máximo 160 caracteres
+        locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores
+        note:
+          one: <span class="name-counter">1</span> caracter restante
+          other: <span class="name-counter">%{count}</span> caracteres restantes
+        setting_noindex: Afecta a tu perfil público y páginas de estado
       imports:
         data: Archivo CSV exportado desde otra instancia de Mastodon
+      sessions:
+        otp: Ingresa el código de autenticación de dos factores de tu teléfono o usa uno de tus códigos de recuperación.
+      user:
+        filtered_languages: Los lenguajes seleccionados serán removidos de tus líneas de tiempo públicas.
     labels:
       defaults:
         avatar: Avatar
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 71a9d6e1f..bdc4f32bf 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -5,13 +5,13 @@ fa:
       defaults:
         avatar: یکی از قالب‌های PNG یا  GIF یا JPG. بیشترین اندازه ۲ مگابایت. تصویر به اندازهٔ ۱۲۰×۱۲۰ پیکسل تبدیل خواهد شد.
         display_name:
-          one: '<span class="name-counter">1</span> حرف باقی مانده'
-          other: '<span class="name-counter">%{count}</span> حرف باقی مانده'
+          one: <span class="name-counter">1</span> حرف باقی مانده
+          other: <span class="name-counter">%{count}</span> حرف باقی مانده
         header: یکی از قالب‌های PNG یا  GIF یا JPG. بیشترین اندازه ۲ مگابایت. تصویر به اندازهٔ ۳۳۵×۷۰۰ پیکسل تبدیل خواهد شد
         locked: باید پیگیران تازه را خودتان تأیید کنید. حریم خصوصی پیش‌فرض نوشته‌ها را روی پیگیران تنظیم می‌کند
         note:
-          one: '<span class="note-counter">1</span> حرف باقی مانده'
-          other: '<span class="note-counter">%{count}</span> حرف باقی مانده'
+          one: <span class="note-counter">1</span> حرف باقی مانده
+          other: <span class="note-counter">%{count}</span> حرف باقی مانده
         setting_noindex: روی نمایهٔ عمومی و صفحهٔ نوشته‌های شما تأثیر می‌گذارد
       imports:
         data: پروندهٔ CSV که از سرور ماستدون دیگری برون‌سپاری شده
@@ -40,7 +40,7 @@ fa:
         setting_boost_modal: نمایش پیغام تأیید پیش از بازبوقیدن
         setting_default_privacy: حریم خصوصی نوشته‌ها
         setting_default_sensitive: همیشه تصاویر را به عنوان حساس علامت بزن
-        setting_delete_modal: پیش از پاک کردن یک بوق پیغام تأیید نشان بده
+        setting_delete_modal: پیش از پاک کردن یک نوشته پیغام تأیید نشان بده
         setting_noindex: درخواست از موتورهای جستجو برای لغو فهرست‌سازی
         setting_system_font_ui: به‌کاربردن قلم پیش‌فرض سیستم
         setting_unfollow_modal: نمایش پیغام تأیید پیش از لغو پیگیری دیگران
@@ -57,8 +57,8 @@ fa:
         follow_request: وقتی کسی درخواست پیگیری کرد ایمیل بفرست
         mention: وقتی کسی از شما نام برد ایمیل بفرست
         reblog: وقتی کسی نوشتهٔ شما را بازبوقید ایمیل بفرست
-    'no': 'خیر'
+    'no': خیر
     required:
       mark: "*"
       text: ضروری
-    'yes': 'بله'
+    'yes': بله
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 2bacd6d2c..8ca4378b1 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -39,8 +39,8 @@ fi:
         follow_request: Lähetä s-posti kun joku pyytää seurata sinua
         mention: Lähetä s-posti kun joku mainitsee sinut
         reblog: Lähetä s-posti kun joku buustaa julkaisusi
-    'no': 'Ei'
+    'no': Ei
     required:
       mark: "*"
       text: vaaditaan
-    'yes': 'Kyllä'
+    'yes': Kyllä
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index 8717a4abd..adfb1a875 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -12,6 +12,7 @@ fr:
         note:
           one: <span class="note-counter">1</span> caractère restant
           other: <span class="note-counter">%{count}</span> caractères restants
+        setting_noindex: Affecte votre profil public ainsi que vos statuts
       imports:
         data: Un fichier CSV généré par une autre instance de Mastodon
       sessions:
@@ -27,6 +28,7 @@ fr:
         data: Données
         display_name: Nom public
         email: Adresse courriel
+        filtered_languages: Langues filtrées
         header: Image d’en-tête
         locale: Langue
         locked: Verrouiller le compte
@@ -37,8 +39,11 @@ fr:
         setting_auto_play_gif: Lire automatiquement les GIFs animés
         setting_boost_modal: Afficher un dialogue de confirmation avant de partager
         setting_default_privacy: Confidentialité des statuts
+        setting_default_sensitive: Toujours marquer les médias comme sensibles
         setting_delete_modal: Afficher un dialogue de confirmation avant de supprimer un pouet
+        setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles
         setting_system_font_ui: Utiliser la police par défaut du système
+        setting_unfollow_modal: Afficher un dialogue de confirmation avant de vous désabonner d’un compte
         severity: Séverité
         type: Type d’import
         username: Identifiant
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index 532054449..d6af5e7ac 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -3,19 +3,19 @@ he:
   simple_form:
     hints:
       defaults:
-        avatar: 'PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן ל-120x120px'
+        avatar: PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן ל-120x120px
         display_name:
-          one: 'נותרה אות<span class="name-counter">אחת</span>'
-          other: 'נותרו<span class="name-counter">%{count}</span> אותיות'
-        header: 'PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן 700x335px'
-        locked: 'מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת'
+          one: נותרה אות<span class="name-counter">אחת</span>
+          other: נותרו<span class="name-counter">%{count}</span> אותיות
+        header: PNG, GIF או JPG. מקסימום 2MB. גודל התמונה יוקטן 700x335px
+        locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת
         note:
-          one: 'נותרה אות<span class="note-counter">אחת</span>'
-          other: 'נותרו <span class="note-counter">%{count}</span> אותיות'
+          one: נותרה אות<span class="note-counter">אחת</span>
+          other: נותרו <span class="note-counter">%{count}</span> אותיות
       imports:
-        data: 'קובץ CSV שיוצא משרת מסטודון אחר'
+        data: קובץ CSV שיוצא משרת מסטודון אחר
       sessions:
-        otp: 'נא להקליד קוד אימות דו-שלבי ממכשירך או קוד אחזור גישה.'
+        otp: נא להקליד קוד אימות דו-שלבי ממכשירך או קוד אחזור גישה.
       user:
         filtered_languages: בחירת שפות להסתרה מציר הזמן הציבורי שלך.
     labels:
@@ -26,7 +26,7 @@ he:
         current_password: סיסמא נוכחית
         data: מידע
         display_name: שם להצגה
-        email: 'כתובת דוא"ל'
+        email: כתובת דוא"ל
         header: ראשה
         locale: שפה
         locked: הפוך חשבון לפרטי
@@ -44,14 +44,14 @@ he:
         must_be_follower: חסימת התראות משאינם עוקבים
         must_be_following: חסימת התראות משאינם נעקבים
       notification_emails:
-        digest: 'שליחת הודעות דוא"ל מסכמות'
-        favourite: 'שליחת דוא"ל כשמחבבים חצרוץ'
-        follow: 'שליחת דוא"ל כשנוספות עוקבות'
-        follow_request: 'שליחת דוא"ל כשמבקשים לעקוב'
-        mention: 'שליחת דוא"ל כשפונים אלייך'
-        reblog: 'שליחת דוא"ל כשמהדהדים חצרוץ שלך'
-    'no': 'לא'
+        digest: שליחת הודעות דוא"ל מסכמות
+        favourite: שליחת דוא"ל כשמחבבים חצרוץ
+        follow: שליחת דוא"ל כשנוספות עוקבות
+        follow_request: שליחת דוא"ל כשמבקשים לעקוב
+        mention: שליחת דוא"ל כשפונים אלייך
+        reblog: שליחת דוא"ל כשמהדהדים חצרוץ שלך
+    'no': לא
     required:
       mark: "*"
       text: שדה חובה
-    'yes': 'כן'
+    'yes': כן
diff --git a/config/locales/simple_form.hr.yml b/config/locales/simple_form.hr.yml
index 0b7761a7f..3010423a7 100644
--- a/config/locales/simple_form.hr.yml
+++ b/config/locales/simple_form.hr.yml
@@ -40,8 +40,8 @@ hr:
         follow_request: Pošalji mi e-mail kad mi netko pošalje zahtjev da me želi slijediti
         mention: Pošalji mi e-mail kad me netko spomene
         reblog: Pošalji mi e-mail kad netko rebloga moj status
-    'no': 'Ne'
+    'no': Ne
     required:
       mark: "*"
       text: traženo
-    'yes': 'Da'
+    'yes': Da
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index 89eb70767..c4dc3aead 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -20,8 +20,8 @@ hu:
         follow: E-mail küldése amikor valaki követni kezd téged
         mention: E-mail küldése amikor valaki megemlít téged
         reblog: E-mail küldése amikor valaki reblogolja az állapotod
-    'no': 'Nem'
+    'no': Nem
     required:
       mark: "*"
       text: kötelező
-    'yes': 'Igen'
+    'yes': Igen
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index a6e6a77a1..b00b4ef4f 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -43,8 +43,8 @@ id:
         follow_request: Kirim email saat seseorang meminta untuk mengikuti anda
         mention: Kirim email saat seseorang menyebut anda
         reblog: Kirim email saat seseorang mem-boost status anda
-    'no': 'Tidak'
+    'no': Tidak
     required:
       mark: "*"
       text: wajib
-    'yes': 'Ya'
+    'yes': Ya
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 70389e948..17b35ba8f 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -6,11 +6,12 @@ ja:
         avatar: 2MBまでのPNGやGIF、JPGが利用可能です。120x120pxまで縮小されます。
         display_name: あと<span class="name-counter">%{count}</span>文字入力できます。
         header: 2MBまでのPNGやGIF、JPGが利用可能です。 700x335pxまで縮小されます。
-        locked: フォロワーを手動で承認する必要があります。
+        locked: フォロワーを手動で承認する必要があります
         note: あと<span class="note-counter">%{count}</span>文字入力できます。
         setting_noindex: 公開プロフィールおよび各投稿ページに影響します
+        setting_theme: ログインしている全てのデバイスで適用されるデザインです。
       imports:
-        data: 他の Mastodon インスタンスからエクスポートしたCSVファイルを選択して下さい
+        data: 他の Mastodon インスタンスからエクスポートしたCSVファイルを選択して下さい。
       sessions:
         otp: 携帯電話に表示された2段階認証コードを入力するか、生成したリカバリーコードを使用してください。
       user:
@@ -39,6 +40,7 @@ ja:
         setting_delete_modal: トゥートを削除する前に確認ダイアログを表示する
         setting_noindex: 検索エンジンによるインデックスを拒否する
         setting_system_font_ui: システムのデフォルトフォントを使う
+        setting_theme: サイトテーマ
         setting_unfollow_modal: フォロー解除する前に確認ダイアログを表示する
         severity: 重大性
         type: インポートする項目
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index b7dbc8bef..abbad7430 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -51,8 +51,8 @@ ko:
         follow_request: 누군가 나를 팔로우 하길 원할 때 이메일 보내기
         mention: 누군가 나에게 답장했을 때 이메일 보내기
         reblog: 누군가 내 Toot을 부스트 했을 때 이메일 보내기
-    'no': '아니오'
+    'no': 아니오
     required:
       mark: "*"
       text: 필수 항목
-    'yes': '네'
+    'yes': 네
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 351d1800c..fabb5840a 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -7,13 +7,16 @@ nl:
         display_name: Maximaal 30 tekens
         header: PNG, GIF of JPG. Maximaal 2MB. Wordt teruggeschaald naar 700x335px
         locked: Vereist dat je handmatig volgers moet accepteren en stelt de privacy van toots standaard in op alleen volgers
-        note: Maximaal 160 tekens
+        note:
+          one: <span class="note-counter">1</span> teken over
+          other: <span class="note-counter">%{count}</span> tekens over
+        setting_noindex: Heeft invloed op jouw openbare profiel en toots
       imports:
-        data: CSV-bestand dat op een andere Mastodon-server werd geëxporteerd 
+        data: CSV-bestand dat op een andere Mastodon-server werd geëxporteerd
       sessions:
-        otp: Voer de tweestaps-aanmeldcode vanaf jouw mobiele telefoon in of gebruik een van jouw herstelcode's.        
+        otp: Voer de tweestaps-aanmeldcode vanaf jouw mobiele telefoon in of gebruik een van jouw herstelcode's.
       user:
-        filtered_languages: De geselecteerde talen worden uit de lokale en globale tijdlijn verwijderd.        
+        filtered_languages: De geselecteerde talen worden uit de lokale en globale tijdlijn verwijderd.
     labels:
       defaults:
         avatar: Avatar
@@ -32,8 +35,13 @@ nl:
         otp_attempt: Tweestaps-aanmeldcode
         password: Wachtwoord
         setting_auto_play_gif: Speel geanimeerde GIF's automatisch af
-        setting_boost_modal: Vraag voor het boosten een bevestiging
-        setting_default_privacy: Tootprivacy
+        setting_boost_modal: Vraag voor het boosten van een toot een bevestiging
+        setting_default_privacy: Zichtbaarheid toots
+        setting_default_sensitive: Media altijd als gevoelig markeren
+        setting_delete_modal: Vraag voor het verwijderen van een toot een bevestiging
+        setting_noindex: Jouw toots niet door zoekmachines laten indexeren
+        setting_system_font_ui: Standaardlettertype van jouw systeem gebruiken
+        setting_unfollow_modal: Vraag voor het ontvolgen van iemand een bevestiging
         type: Importtype
         username: gebruikersnaam
       interactions:
@@ -46,8 +54,8 @@ nl:
         follow_request: Verstuur een e-mail wanneer iemand jou wilt volgen
         mention: Verstuur een e-mail wanneer iemand jou vermeld
         reblog: Verstuur een e-mail wanneer iemand jouw toot heeft geboost
-    'no': 'Nee'
+    'no': Nee
     required:
       mark: "*"
       text: vereist
-    'yes': 'Ja'
+    'yes': Ja
diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml
index cc9ad4c6f..194e1582f 100644
--- a/config/locales/simple_form.no.yml
+++ b/config/locales/simple_form.no.yml
@@ -1,19 +1,17 @@
+---
 'no':
   simple_form:
     hints:
       defaults:
-        avatar: 'PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 120x120px'
+        avatar: PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 120x120px
         display_name: Maksimalt 30 tegn
-        header: 'PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 700x335px'
-        locked: >-
-          Krever at du manuelt godkjenner følgere og setter standardbeskyttelse
-          av poster til kun-følgere
+        header: PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 700x335px
+        locked: Krever at du manuelt godkjenner følgere og setter standardbeskyttelse av poster til kun-følgere
         note: Maksimalt 160 tegn
       imports:
         data: CSV-fil eksportert fra en annen Mastodon instans
       sessions:
-        otp: >-
-          Skriv tofaktorkoden fra din telefon eller bruk en av gjenopprettingskodene.
+        otp: Skriv tofaktorkoden fra din telefon eller bruk en av gjenopprettingskodene.
     labels:
       defaults:
         avatar: Profilbilde
@@ -48,7 +46,6 @@
         reblog: Send e-post når noen fremhever din status
     'no': Nei
     required:
-      mark: '*'
+      mark: "*"
       text: påkrevd
     'yes': Ja
-
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 43cb52201..d45f98e66 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -12,6 +12,8 @@ oc:
         note:
           one: Demòra encara <span class="name-counter">1</span> caractèr
           other: Demòran encara <span class="name-counter">%{count}</span> caractèrs
+        setting_noindex: Aquò es destinat a vòstre perfil public e vòstra pagina d’estatuts
+        setting_theme: Aquò càmbia lo tèma grafic de Mastodon quand sètz connectat qualque siaque lo periferic.
       imports:
         data: Fichièr CSV exportat d’una autra instància Mastodon
       sessions:
@@ -42,6 +44,7 @@ oc:
         setting_delete_modal: Afichar una fenèstra de confirmacion abans de suprimir un estatut
         setting_noindex: Èsser pas indexat pels motors de recèrca
         setting_system_font_ui: Utilizar la policia Font del sisèma
+        setting_theme: Tèma del site
         setting_unfollow_modal: Afichar una confirmacion abans de quitar de sègre qualqu’un
         severity: Severitat
         type: Tip d’impòrt
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 7e84472b9..d5de2dcd3 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -16,12 +16,14 @@ pl:
           many: Pozostało <span class="name-counter">%{count}</span> znaków
           one: Pozostał <span class="name-counter">1</span> znak.
           other: Pozostało <span class="name-counter">%{count}</span> znaków
+        setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów
+        setting_theme: Zmienia wygląd Mastodona po zalogowaniu z dowolnego urządzenia.
       imports:
         data: Plik CSV wyeksportowany z innej instancji Mastodona
       sessions:
-        otp: Wprowadź kod weryfikacji dwuetapowej z telefonu lub wykorzystaj jeden z kodów zapasowych.
+        otp: Wprowadź kod weryfikacji dwuetapowej z telefonu lub wykorzystaj jeden z kodów zapasowych
       user:
-        filtered_languages: Wybrane języki nie będą się pojawiać na publicznych osiach czasu.
+        filtered_languages: Wpisy w wybranych językach nie będą pojawiać się na publicznych osiach czasu.
     labels:
       defaults:
         avatar: Awatar
@@ -41,25 +43,26 @@ pl:
         password: Hasło
         setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy
         setting_boost_modal: Pytaj o potwierdzenie przed podbiciem
-        setting_default_privacy: Widoczność posta
+        setting_default_privacy: Widoczność wpisów
         setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
-        setting_delete_modal: Pytaj o potwierdzenie przed usunięciem postu
+        setting_delete_modal: Pytaj o potwierdzenie przed usunięciem wpisu
         setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
         setting_system_font_ui: Używaj domyślnej czcionki systemu
-        setting_unfollow_modal: Pytaj o potwierdzenie przed usunięciem śledzenia
+        setting_theme: Motyw strony
+        setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem śledzenia
         severity: Priorytet
         type: Typ importu
         username: Nazwa użytkownika
       interactions:
-        must_be_follower: Zablokuj powiadomienia od osób, które Cię nie śledzą
-        must_be_following: Zablokuj powiadomienia od osób, których nie śledzisz
+        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
       notification_emails:
         digest: Wysyłaj podsumowania e-mailem
-        favourite: Powiadom mnie e-mailem gdy ktoś polubi mój status.
-        follow: Powiadom mnie e-mailem gdy ktoś zacznie mnie śledzić.
-        follow_request: Powiadom mnie e-mailem gdy ktoś poprosi o pozwolenie śledzenia mnie.
-        mention: Powiadom mnie e-mailem gdy ktoś mnie wspomni.
-        reblog: Powiadom mnie e-mailem gdy ktoś podbije mój status.
+        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
+        reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis
     'no': Nie
     required:
       mark: "*"
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 733e16892..22cae5271 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -1,51 +1,64 @@
 ---
 pt-BR:
   simple_form:
-    labels:
+    hints:
       defaults:
-        avatar: PNG, GIF or JPG. Máximo 2MB. Será reduzido para 120x120px
-        display_name: '<span class="name-counter">%{count}</span> caracteres restantes'
-        header: PNG, GIF or JPG. Máximo 2MB. Será reduzido para 700x335px
-        locked: Requer você aprovação manualmente seguidores e posts padrão de privacidade para seguidores-apenas
-        note: '<span class="note-counter">%{count}</span> caracteres restantes'
+        avatar: PNG, GIF or JPG. Arquivos de até 2MB. Eles serão diminuídos para 120x120px
+        display_name:
+          one: <span class="name-counter">1</span> caracter restante
+          other: <span class="name-counter">%{count}</span> caracteres restantes
+        header: PNG, GIF or JPG. Arquivos de até 2MB. Eles serão diminuídos para 700x335px
+        locked: Requer aprovação manual de seguidores
+        note:
+          one: <span class="note-counter">1</span> caracter restante
+          other: <span class="note-counter">%{count}</span> caracteres restantes
+        setting_noindex: Afeta seu perfil público e as páginas de suas postagens
       imports:
-        data: Arquivo CSV exportado de outra instancia Mastodon
+        data: Arquivo CSV exportado de outra instância do Mastodon
       sessions:
-        otp: Entre com o código de 2 passos do seu telefone ou use os códiogos de recuperação.
+        otp: Insira o código de autenticação do seu celular ou use um dos códigos de recuperação.
+      user:
+        filtered_languages: Selecione os idiomas que devem ser removidos de suas timelines públicas.
     labels:
       defaults:
         avatar: Avatar
-        confirm_new_password: Confirme nova senha
-        confirm_password: Confirme a senha
+        confirm_new_password: Confirmar nova senha
+        confirm_password: Confirmar senha
         current_password: Senha atual
         data: Dados
-        display_name: Nome
-        email: Endereço de email
-        header: Header
-        locale: Linguagem
-        locked: Conta bloqueada
+        display_name: Nome de exibição
+        email: Endereço de e-mail
+        filtered_languages: Idiomas filtrados
+        header: Cabeçalho
+        locale: Idioma
+        locked: Trancar conta
         new_password: Nova senha
-        note: Biografia
-        otp_attempt: Autenticação 2 passos
+        note: Bio
+        otp_attempt: Código de autenticação em dois passos
         password: Senha
-        setting_auto_play_gif: Tocar GIFs animados automaticamente
-        setting_boost_modal: Mostrar dialogo de confirmação antes de fazer boost
-        setting_default_privacy: Postar privacidade
-        severity: Severidade
-        type: Importar tipo
-        username: Usuário
+        setting_auto_play_gif: Reproduzir GIFs automaticamente
+        setting_boost_modal: Mostrar diálogo de confirmação antes de compartilhar postagem
+        setting_default_privacy: Privacidade das postagens
+        setting_default_sensitive: Sempre marcar mídia como sensível
+        setting_delete_modal: Mostrar diálogo de confirmação antes de deletar uma postagem
+        setting_noindex: Não quero ser indexado por mecanismos de busca
+        setting_system_font_ui: Usar a fonte padrão de seu sistema
+        setting_unfollow_modal: Mostrar diálogo de confirmação antes de deixar de seguir alguém
+        severity: Gravidade
+        type: Tipo de importação
+        username: Nome de usuário
       interactions:
         must_be_follower: Bloquear notificações de não-seguidores
-        must_be_following: Bloquear notificações de pessoas que você
+        must_be_following: Bloquear notificações de pessoas que você não segue
       notification_emails:
-        digest: Enviar resumo de emails
-        favourite: Enviar email quando alguém favorita um post seu
-        follow: Enviar email quando alguém seguir você
-        follow_request: Enviar email quando alguém requisitar te seguir
-        mention: Enviar email quando alguém mencionar você
-        reblog: Enviar email quando alguém reblogar um post seu
-    'no': 'Não'
+        digest: Mandar e-mails com relatórios
+        favourite: Mandar um e-mail quando alguém favoritar suas postagens
+        follow: Mandar um e-mail quando alguém te seguir
+        follow_request: Mandar um e-maill quando alguém solicitar ser seu seguidor
+        mention: Mandar um e-mail quando alguém te mencionar
+        reblog: Mandar um e-mail quando alguém compartilhar suas postagens
+    'no': Não
     required:
       mark: "*"
-      text: necessário
-    'yes': 'Sim'
+      text: obrigatório
+    'yes': Sim
diff --git a/config/locales/simple_form.pt.yml b/config/locales/simple_form.pt.yml
index ba3326b23..0df7a9bb9 100644
--- a/config/locales/simple_form.pt.yml
+++ b/config/locales/simple_form.pt.yml
@@ -42,8 +42,8 @@ pt:
         follow: Enviar email quando alguém te segue
         mention: Enviar email quando alguém te menciona
         reblog: Enviar email quando alguém partilhar um post teu
-    'no': 'Não'
+    'no': Não
     required:
       mark: "*"
       text: necessário
-    'yes': 'Sim'
+    'yes': Sim
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index c58758da4..87c673600 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -5,13 +5,13 @@ th:
       defaults:
         avatar: PNG, GIF or JPG. At most 2MB. Will be downscaled to 120x120px
         display_name:
-          one: '<span class="name-counter">1</span> character left'
-          other: '<span class="name-counter">%{count}</span> characters left'
+          one: <span class="name-counter">1</span> character left
+          other: <span class="name-counter">%{count}</span> characters left
         header: PNG, GIF or JPG. At most 2MB. Will be downscaled to 700x335px
         locked: Requires you to manually approve followers and defaults post privacy to followers-only
         note:
-          one: '<span class="name-counter">1</span> character left'
-          other: '<span class="note-counter">%{count}</span> characters left'
+          one: <span class="name-counter">1</span> character left
+          other: <span class="note-counter">%{count}</span> characters left
       imports:
         data: CSV file exported from another Mastodon instance
       sessions:
@@ -48,8 +48,8 @@ th:
         follow_request: Send e-mail when someone requests to follow you
         mention: Send e-mail when someone mentions you
         reblog: Send e-mail when someone boosts your status
-    'no': 'ไม่'
+    'no': ไม่
     required:
       mark: "*"
       text: required
-    'yes': 'ใช่'
+    'yes': ใช่
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 80b6c771c..0e171b793 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -1,14 +1,13 @@
-
 ---
 tr:
   simple_form:
     hints:
       defaults:
         avatar: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 120x120px büyüklüğüne indirgenecektir
-        display_name: '<span class="name-counter">%{count}</span> karakter kaldı'
+        display_name: <span class="name-counter">%{count}</span> karakter kaldı
         header: En fazla 2MB olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. 700x335px büyüklüğüne indirgenecektir.
         locked: Takipçilerinizi manuel olarak kabul etmenizi ve gönderilerinizi varsayılan olarak sadece takipçilerinizin göreceği şekilde paylaşmanızı sağlar.
-        note: '<span class="note-counter">%{count}</span> karakter kaldı'
+        note: <span class="note-counter">%{count}</span> karakter kaldı
       imports:
         data: Diğer Mastodon sunucusundan dışarı aktardığınız CSV dosyası
       sessions:
@@ -45,9 +44,8 @@ tr:
         follow_request: Biri bana takip isteği gönderdiğinde, bana e-posta gönder
         mention: Biri benden bahsettiğinde, bana e-posta gönder
         reblog: Biri durumumu paylaştığında, bana e-posta gönder
-    'no': 'Hayır'
+    'no': Hayır
     required:
       mark: "*"
       text: gerekli
-    'yes': 'Evet'
-
+    'yes': Evet
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 16608c129..ff7f2d4ca 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -44,8 +44,8 @@ uk:
         follow_request: Надсилати листа, коли хтось запитує дозволу на підписку
         mention: Надсилати листа, коли хтось згадує Вас
         reblog: Надсилати листа, коли хтось передмухує Ваш статус
-    'no': 'Ні'
+    'no': Ні
     required:
       mark: "*"
       text: обов'язкове
-    'yes': 'Так'
+    'yes': Так
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index 6f4edaf48..eafaa972e 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -46,8 +46,8 @@ zh-CN:
         follow_request: 当有用户要求关注你时,发电邮通知
         mention: 当有用户在嘟文中提及你时,发电邮通知
         reblog: 当有用户转嘟了你的嘟文时,发电邮通知
-    'no': '否'
+    'no': 否
     required:
       mark: "*"
       text: 必填
-    'yes': '是'
+    'yes': 是
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 0bb135ca1..c82f07e2d 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -42,8 +42,8 @@ zh-TW:
         follow_request: 當有使用者要求關注您時,發信通知
         mention: 當有使用者在文章提及您時,發信通知
         reblog: 當有使用者轉推您的文章時,發信通知
-    'no': '否'
+    'no': 否
     required:
       mark: "*"
       text: 必填
-    'yes': '是'
+    'yes': 是
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 801f4886f..2db3aee8a 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -170,7 +170,6 @@ th:
   authorize_follow:
     error: Unfortunately, there was an error looking up the remote account
     follow: ติดตาม
-    prompt_html: 'คุณ (<strong>%{self}</strong>) ขอติดตาม:'
     title: ติดตาม %{acct}
   datetime:
     distance_in_words:
@@ -258,6 +257,17 @@ th:
     reblog:
       body: 'Your status was boosted by %{name}:'
       subject: "%{name} boosted your status"
+  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/tr.yml b/config/locales/tr.yml
index ac378090c..6aff78fa1 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -169,7 +169,6 @@ tr:
   authorize_follow:
     error: Uzak hesap aranırken bir hata oluştu.
     follow: Takip et
-    prompt_html: 'Siz (<strong>%{self}</strong>) bu kullanıcıyı takip etmek istiyor musunuz?:'
     title: "%{acct}'i takip et"
   datetime:
     distance_in_words:
@@ -256,6 +255,17 @@ 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
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 22fff6961..995a682a7 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -160,7 +160,6 @@ uk:
   authorize_follow:
     error: На жаль, при пошуку віддаленого аккаунту виникла помилка
     follow: Підписатися
-    prompt_html: 'Ви (<strong>%{self}</strong>) запитали про підписку:'
     title: Підписатися на %{acct}
   datetime:
     distance_in_words:
@@ -251,6 +250,17 @@ uk:
     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/zh-CN.yml b/config/locales/zh-CN.yml
index 5018b48b8..44d0f3803 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -65,9 +65,9 @@ zh-CN:
       salmon_url: Salmon 反馈 URL
       search: 搜索
       show:
-        created_reports: 这个账户创建的报告
+        created_reports: 这个帐户创建的报告
         report: 报告
-        targeted_reports: 关于这个账户的报告
+        targeted_reports: 关于这个帐户的报告
       silence: 静音
       statuses: 嘟文
       title: 用户
@@ -82,7 +82,7 @@ zh-CN:
       domain: 域名阻隔
       new:
         create: 添加域名阻隔
-        hint: "「域名阻隔」不会隔绝该域名用户的嘟账户入本站数据库,但会嘟文抵达后,自动套用特定的审批操作。"
+        hint: "「域名阻隔」不会隔绝该域名用户的嘟帐户入本站数据库,但会嘟文抵达后,自动套用特定的审批操作。"
         severity:
           desc_html: "「<strong>自动静音</strong>」令该域名用户的嘟文,设为只对关注者显示,没有关注的人会看不到。 「<strong>自动除名</strong>」会自动将该域名用户的嘟文、媒体文件、个人资料从本服务器实例删除。"
           silence: 自动静音
@@ -96,11 +96,11 @@ zh-CN:
       severity: 阻隔程度
       show:
         affected_accounts:
-          one: 数据库中有1个账户受影响
-          other: 数据库中有%{count}个账户受影响
+          one: 数据库中有1个帐户受影响
+          other: 数据库中有%{count}个帐户受影响
         retroactive:
-          silence: 对此域名的所有账户取消静音
-          suspend: 对此域名的所有账户取消除名
+          silence: 对此域名的所有帐户取消静音
+          suspend: 对此域名的所有帐户取消除名
         title: 撤销 %{domain} 的域名阻隔
         undo: 撤销
       title: 域名阻隔
@@ -176,7 +176,6 @@ zh-CN:
   authorize_follow:
     error: 对不起,寻找这个跨站用户时出错
     follow: 关注
-    prompt_html: 你 (<strong>%{self}</strong>) 正准备关注︰
     title: 关注 %{acct}
   datetime:
     distance_in_words:
@@ -210,12 +209,12 @@ zh-CN:
     domain: 域名
     explanation_html: 想要保护你的嘟文的话,请慎重考虑关注你的人。<strong>你的受保护的嘟文会发送到有你的关注者的所有实例上</strong>。你也许想要复查一下关注者列表来移除那些你无法信任的关注者。
     followers_count: 关注者数量
-    lock_link: 保护你的账户
+    lock_link: 保护你的帐户
     purge: 从关注者中移除
     success: 从 %{count} 个域名中移除了关注者。
     true_privacy_html: "<strong>真正的隐私只能靠端到端加密来实现</strong>!"
     unlocked_warning_html: 任何人都可以关注你然后查看被保护的嘟文, %{lock_link} 可以复核和拒绝关注请求。
-    unlocked_warning_title: 你的账户没被保护
+    unlocked_warning_title: 你的帐户没被保护
   generic:
     changes_saved_msg: 更改已被保存。
     powered_by: 基于 %{link} 构建
@@ -232,7 +231,7 @@ zh-CN:
       muting: 静音名单
     upload: 上载
   landing_strip_html: "<strong>%{name}</strong> 是一个在 %{link_to_root_path} 的用户。只要你是象毛世界里(Mastodon、GNU social)任一服务器实例的用户,便可以跨站关注此站用户并与其沟通。"
-  landing_strip_signup_html: 如果你没有这类账户,欢迎在<a href="%{sign_up_path}">此处登记</a>。
+  landing_strip_signup_html: 如果你没有这类帐户,欢迎在<a href="%{sign_up_path}">此处登记</a>。
   media_attachments:
     validations:
       images_and_video: 无法添加视频到一个已经包含图片的嘟文中
@@ -248,8 +247,8 @@ zh-CN:
         one: "你有一个新通知 \U0001F418"
         other: "%{count} 个通知太多,赶快去看看 \U0001F418"
     favourite:
-      body: "%{name} 赞你"
-      subject: "%{name} 对你点赞"
+      body: "%{name} 收藏了你"
+      subject: "%{name} 给你点了收藏"
     follow:
       body: "%{name} 关注了你"
       subject: "%{name} 关注了你"
@@ -262,13 +261,24 @@ zh-CN:
     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: "……"
   remote_follow:
     acct: 请输入你的︰用户名称@实例域名
-    missing_resource: 无法找到您的账户转接网址
+    missing_resource: 无法找到您的帐户转接网址
     proceed: 下一步
     prompt: 你正准备关注︰
   settings:
@@ -307,10 +317,10 @@ zh-CN:
     enabled_success: 已成功启用两步认证
     generate_recovery_codes: 生成恢复代码
     instructions_html: "<strong>请用你手机的认证器应用(如 Google Authenticator、Authy),扫描这里的 QR 二维码</strong>。在两步认证启用后,你登录时将需要使用此应用程序产生的认证码。"
-    lost_recovery_codes: 如果你丢了手机,你可以用恢复代码重新访问你的账户。如果你丢了恢复代码,也可以在这里重新生成一个,不过以前的恢复代码就失效了。<del>(废话)</del>
+    lost_recovery_codes: 如果你丢了手机,你可以用恢复代码重新访问你的帐户。如果你丢了恢复代码,也可以在这里重新生成一个,不过以前的恢复代码就失效了。<del>(废话)</del>
     manual_instructions: 如果你无法扫描 QR 二维码,请手动输入这个文本密码︰
     recovery_codes_regenerated: 已成功重新生成恢复代码
-    recovery_instructions_html: 如果你的手机无法使用,你可以使用下面的任何恢复代码来恢复你的账号。请保管好你的恢复代码以防泄漏(例如你可以打印好它们并和重要文档一起保存)。
+    recovery_instructions_html: 如果你的手机无法使用,你可以使用下面的任何恢复代码来恢复你的帐号。请保管好你的恢复代码以防泄漏(例如你可以打印好它们并和重要文档一起保存)。
     setup: 设置
     wrong_code: 你输入的认证码并不正确!可能服务器时间和你手机不一致,请检查你手机的时钟,或与本站管理员联系。
   users:
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 40087ed53..8ff6d1bf8 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -169,7 +169,6 @@ zh-HK:
   authorize_follow:
     error: 對不起,尋找這個跨站用戶的過程發生錯誤
     follow: 關注
-    prompt_html: 你 (<strong>%{self}</strong>) 正準備關注︰
     title: 關注 %{acct}
   datetime:
     distance_in_words:
@@ -243,8 +242,8 @@ zh-HK:
         one: "自從上次登入以來,你收到 1 則新的通知 \U0001F418"
         other: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418"
     favourite:
-      body: 你的文章獲得 %{name} 的喜愛
-      subject: "%{name} 喜歡你的文章"
+      body: 你的文章是 %{name} 的最愛!
+      subject: "%{name} 收藏了你的文章"
     follow:
       body: "%{name} 開始關注你!"
       subject: "%{name} 現正關注你"
@@ -257,6 +256,17 @@ zh-HK:
     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/zh-TW.yml b/config/locales/zh-TW.yml
index 0ea3457c7..7a66a64ca 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -140,7 +140,6 @@ zh-TW:
   authorize_follow:
     error: 對不起,尋找這個跨站使用者的過程發生錯誤
     follow: 關注
-    prompt_html: 您 (<strong>%{self}</strong>) 正準備關注︰
     title: 關注 %{acct}
   datetime:
     distance_in_words:
@@ -198,8 +197,8 @@ zh-TW:
         one: "自從上次登入以來,您收到 1 則新的通知 \U0001F418"
         other: "自從上次登入以來,您收到 %{count} 則新的通知 \U0001F418"
     favourite:
-      body: 您的文章被 %{name} 喜歡
-      subject: "%{name} 喜歡您的文章"
+      body: 您的文章被 %{name} 收藏
+      subject: "%{name} 將您的文章加入了最愛"
     follow:
       body: "%{name} 開始關注您!"
       subject: "%{name} 開始關注您"
@@ -212,6 +211,17 @@ zh-TW:
     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/navigation.rb b/config/navigation.rb
index 535d033f5..0a6ab6d3d 100644
--- a/config/navigation.rb
+++ b/config/navigation.rb
@@ -15,6 +15,10 @@ SimpleNavigation::Configuration.run do |navigation|
       settings.item :follower_domains, safe_join([fa_icon('users fw'), t('settings.followers')]), settings_follower_domains_url
     end
 
+    primary.item :development, safe_join([fa_icon('code fw'), t('settings.development')]), settings_applications_url do |development|
+      development.item :your_apps, safe_join([fa_icon('list fw'), t('settings.your_apps')]), settings_applications_url, highlights_on: %r{/settings/applications}
+    end
+
     primary.item :admin, safe_join([fa_icon('cogs fw'), t('admin.title')]), admin_reports_url, if: proc { current_user.admin? } do |admin|
       admin.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_url, highlights_on: %r{/admin/reports}
       admin.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url, highlights_on: %r{/admin/accounts}
@@ -24,6 +28,7 @@ SimpleNavigation::Configuration.run do |navigation|
       admin.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }
       admin.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }
       admin.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_url
+      admin.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis}
     end
 
     primary.item :logout, safe_join([fa_icon('sign-out fw'), t('auth.logout')]), destroy_user_session_url, link_html: { 'data-method' => 'delete' }
diff --git a/config/routes.rb b/config/routes.rb
index c60a8b131..2c41c24e9 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -20,6 +20,7 @@ Rails.application.routes.draw do
   get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
   get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
   get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
+  get 'intent', to: 'intents#show'
 
   devise_for :users, path: 'auth', controllers: {
     sessions:           'auth/sessions',
@@ -43,6 +44,7 @@ Rails.application.routes.draw do
     resources :statuses, only: [:show] do
       member do
         get :activity
+        get :embed
       end
     end
 
@@ -51,10 +53,16 @@ Rails.application.routes.draw do
     resource :follow, only: [:create], controller: :account_follow
     resource :unfollow, only: [:create], controller: :account_unfollow
     resource :outbox, only: [:show], module: :activitypub
+    resource :inbox, only: [:create], module: :activitypub
   end
 
+  resource :inbox, only: [:create], module: :activitypub
+
   get '/@:username', to: 'accounts#show', as: :short_account
+  get '/@:username/with_replies', to: 'accounts#show', as: :short_account_with_replies
+  get '/@:username/media', to: 'accounts#show', as: :short_account_media
   get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status
+  get '/@:account_username/:id/embed', to: 'statuses#embed', as: :embed_short_account_status
 
   namespace :settings do
     resource :profile, only: [:show, :update]
@@ -75,6 +83,13 @@ Rails.application.routes.draw do
     end
 
     resource :follower_domains, only: [:show, :update]
+
+    resources :applications, except: [:edit] do
+      member do
+        post :regenerate
+      end
+    end
+
     resource :delete, only: [:show, :destroy]
 
     resources :sessions, only: [:destroy]
@@ -83,14 +98,17 @@ Rails.application.routes.draw do
   resources :media, only: [:show]
   resources :tags,  only: [:show]
 
+  get '/media_proxy/:id/(*any)', to: 'media_proxy#show', as: :media_proxy
+
   # Remote follow
   resource :authorize_follow, only: [:show, :create]
+  resource :share, only: [:show, :create]
 
   namespace :admin do
     resources :subscriptions, only: [:index]
     resources :domain_blocks, only: [:index, :new, :create, :show, :destroy]
     resource :settings, only: [:edit, :update]
-    
+
     resources :instances, only: [:index] do
       collection do
         post :resubscribe
@@ -118,6 +136,8 @@ Rails.application.routes.draw do
     resources :users, only: [] do
       resource :two_factor_authentication, only: [:destroy]
     end
+
+    resources :custom_emojis, only: [:index, :new, :create, :destroy]
   end
 
   get '/admin', to: redirect('/admin/settings/edit', status: 302)
@@ -150,6 +170,9 @@ Rails.application.routes.draw do
 
           resource :mute, only: :create
           post :unmute, to: 'mutes#destroy'
+
+          resource :pin, only: :create
+          post :unpin, to: 'pins#destroy'
         end
 
         member do
@@ -163,7 +186,9 @@ Rails.application.routes.draw do
         resource :public, only: :show, controller: :public
         resources :tag, only: :show
       end
-      resources :streaming,  only: [:index]
+
+      resources :streaming, only: [:index]
+      resources :custom_emojis, only: [:index]
 
       get '/search', to: 'search#index', as: :search
 
@@ -171,7 +196,11 @@ Rails.application.routes.draw do
       resources :media,      only: [:create]
       resources :apps,       only: [:create]
       resources :blocks,     only: [:index]
-      resources :mutes,      only: [:index]
+      resources :mutes,      only: [:index] do
+        collection do 
+          get 'details'
+        end
+      end
       resources :favourites, only: [:index]
       resources :reports,    only: [:index, :create]
 
@@ -199,6 +228,7 @@ Rails.application.routes.draw do
         resource :search, only: :show, controller: :search
         resources :relationships, only: :index
       end
+
       resources :accounts, only: [:show] do
         resources :statuses, only: :index, controller: 'accounts/statuses'
         resources :followers, only: :index, controller: 'accounts/follower_accounts'
@@ -217,6 +247,7 @@ Rails.application.routes.draw do
 
     namespace :web do
       resource :settings, only: [:update]
+      resource :embed, only: [:create]
       resources :push_subscriptions, only: [:create] do
         member do
           put :update
@@ -234,7 +265,7 @@ Rails.application.routes.draw do
   root 'home#index'
 
   match '*unmatched_route',
-    via: :all,
-    to: 'application#raise_not_found',
-    format: false
+        via: :all,
+        to: 'application#raise_not_found',
+        format: false
 end
diff --git a/config/settings.yml b/config/settings.yml
index acaab3166..3cd3307f4 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -24,6 +24,7 @@ defaults: &defaults
   auto_play_gif: false
   system_font_ui: false
   noindex: false
+  theme: 'default'
   notification_emails:
     follow: false
     reblog: false
@@ -41,6 +42,7 @@ defaults: &defaults
     - root
     - webmaster
     - administrator
+  bootstrap_timeline_accounts: ''
 
 development:
   <<: *defaults
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index 8273c1201..4c35dcd43 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -7,17 +7,23 @@
   - mailers
 :schedule:
   subscriptions_scheduler:
-    cron: '0 5 * * *'
+    cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *'
     class: Scheduler::SubscriptionsScheduler
   media_cleanup_scheduler:
-    cron: '5 4 * * *'
+    cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *'
     class: Scheduler::MediaCleanupScheduler
   feed_cleanup_scheduler:
-    cron: '0 0 * * *'
+    cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * *'
     class: Scheduler::FeedCleanupScheduler
   doorkeeper_cleanup_scheduler:
-    cron: '1 1 * * 0'
+    cron: '<%= Random.rand(0..59) %> <%= Random.rand(0..2) %> * * 0'
     class: Scheduler::DoorkeeperCleanupScheduler
   user_cleanup_scheduler:
-    cron: '4 5 * * *'
+    cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *'
     class: Scheduler::UserCleanupScheduler
+  subscriptions_cleanup_scheduler:
+    cron: '<%= Random.rand(0..59) %> <%= Random.rand(1..3) %> * * 0'
+    class: Scheduler::SubscriptionsCleanupScheduler
+  ip_cleanup_scheduler:
+    cron: '<%= Random.rand(0..59) %> <%= Random.rand(3..5) %> * * *'
+    class: Scheduler::IpCleanupScheduler
diff --git a/config/webpack/configuration.js b/config/webpack/configuration.js
index 6ef484c3a..606eb97f1 100644
--- a/config/webpack/configuration.js
+++ b/config/webpack/configuration.js
@@ -1,13 +1,27 @@
 // Common configuration for webpacker loaded from config/webpacker.yml
 
-const { join, resolve } = require('path');
+const { dirname, join, resolve } = require('path');
 const { env } = require('process');
 const { safeLoad } = require('js-yaml');
 const { readFileSync } = require('fs');
+const glob = require('glob');
 
 const configPath = resolve('config', 'webpacker.yml');
 const loadersDir = join(__dirname, 'loaders');
 const settings = safeLoad(readFileSync(configPath), 'utf8')[env.NODE_ENV];
+const themeFiles = glob.sync('app/javascript/themes/*/theme.yml');
+const themes = {};
+
+for (let i = 0; i < themeFiles.length; i++) {
+  const themeFile = themeFiles[i];
+  const data = safeLoad(readFileSync(themeFile), 'utf8');
+  if (!data.pack_directory) {
+    data.pack_directory = dirname(themeFile);
+  }
+  if (data.name && data.pack) {
+    themes[data.name] = data;
+  }
+}
 
 function removeOuterSlashes(string) {
   return string.replace(/^\/*/, '').replace(/\/*$/, '');
@@ -29,6 +43,7 @@ const output = {
 
 module.exports = {
   settings,
+  themes,
   env,
   loadersDir,
   output,
diff --git a/config/webpack/loaders/babel.js b/config/webpack/loaders/babel.js
index 49b191d26..989a87dcf 100644
--- a/config/webpack/loaders/babel.js
+++ b/config/webpack/loaders/babel.js
@@ -1,3 +1,7 @@
+const { resolve } = require('path');
+
+const env = process.env.NODE_ENV || 'development';
+
 module.exports = {
   test: /\.js$/,
   // include react-intl because transform-react-remove-prop-types needs to apply to it
@@ -9,5 +13,6 @@ module.exports = {
   options: {
     forceEnv: process.env.NODE_ENV || 'development',
     sourceRoot: 'app/javascript',
+    cacheDirectory: env === 'development' ? false : resolve(__dirname, '..', '..', '..', 'tmp', 'cache', 'babel-loader'),
   },
 };
diff --git a/config/webpack/loaders/sass.js b/config/webpack/loaders/sass.js
index 40e81b43b..96ad7abe8 100644
--- a/config/webpack/loaders/sass.js
+++ b/config/webpack/loaders/sass.js
@@ -9,7 +9,7 @@ module.exports = {
       { loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
       { loader: 'postcss-loader', options: { sourceMap: true } },
       'resolve-url-loader',
-      { loader: 'sass-loader', options: { includePaths: ['app/javascript/styles'] } },
+      { loader: 'sass-loader', options: { includePaths: ['app/javascript'] } },
     ],
   }),
 };
diff --git a/config/webpack/shared.js b/config/webpack/shared.js
index be1b49421..99f4dec1a 100644
--- a/config/webpack/shared.js
+++ b/config/webpack/shared.js
@@ -1,13 +1,12 @@
 // Note: You must restart bin/webpack-dev-server for changes to take effect
 
-const { existsSync } = require('fs');
 const webpack = require('webpack');
 const { basename, dirname, join, relative, resolve } = require('path');
 const { sync } = require('glob');
 const ExtractTextPlugin = require('extract-text-webpack-plugin');
 const ManifestPlugin = require('webpack-manifest-plugin');
 const extname = require('path-complete-extname');
-const { env, settings, output, loadersDir } = require('./configuration.js');
+const { env, settings, themes, output, loadersDir } = require('./configuration.js');
 const localePackPaths = require('./generateLocalePacks');
 
 const extensionGlob = `**/*{${settings.extensions.join(',')}}*`;
@@ -15,20 +14,27 @@ const entryPath = join(settings.source_path, settings.source_entry_path);
 const packPaths = sync(join(entryPath, extensionGlob));
 const entryPacks = [...packPaths, ...localePackPaths].filter(path => path !== join(entryPath, 'custom.js'));
 
-const customApplicationStyle = resolve(join(settings.source_path, 'styles/custom.scss'));
-const originalApplicationStyle = resolve(join(settings.source_path, 'styles/application.scss'));
+const themePaths = Object.keys(themes).reduce(
+  (themePaths, name) => {
+    const themeData = themes[name];
+    themePaths[`themes/${name}`] = resolve(themeData.pack_directory, themeData.pack);
+    return themePaths;
+  }, {}
+);
 
 module.exports = {
-  entry: entryPacks.reduce(
-    (map, entry) => {
-      const localMap = map;
-      let namespace = relative(join(entryPath), dirname(entry));
-      if (namespace === join('..', '..', '..', 'tmp', 'packs')) {
-        namespace = ''; // generated by generateLocalePacks.js
-      }
-      localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry);
-      return localMap;
-    }, {}
+  entry: Object.assign(
+    entryPacks.reduce(
+      (map, entry) => {
+        const localMap = map;
+        let namespace = relative(join(entryPath), dirname(entry));
+        if (namespace === join('..', '..', '..', 'tmp', 'packs')) {
+          namespace = ''; // generated by generateLocalePacks.js
+        }
+        localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry);
+        return localMap;
+      }, {}
+    ), themePaths
   ),
 
   output: {
@@ -59,10 +65,6 @@ module.exports = {
   ],
 
   resolve: {
-    alias: {
-      'mastodon-application-style': existsSync(customApplicationStyle) ?
-                                    customApplicationStyle : originalApplicationStyle,
-    },
     extensions: settings.extensions,
     modules: [
       resolve(settings.source_path),
diff --git a/config/webpacker.yml b/config/webpacker.yml
index aa429a1dd..8d8470651 100644
--- a/config/webpacker.yml
+++ b/config/webpacker.yml
@@ -4,6 +4,15 @@ default: &default
   source_path: app/javascript
   source_entry_path: packs
   public_output_path: packs
+  cache_path: tmp/cache/webpacker
+
+  # Additional paths webpack should lookup modules
+  # ['app/assets', 'engine/foo/app/assets']
+  resolved_paths: []
+
+  # Reload manifest.json on all requests so we reload latest compiled packs
+  cache_manifest: false
+
   extensions:
     - .js
     - .sass
@@ -17,16 +26,25 @@ default: &default
 
 development:
   <<: *default
+  compile: true
 
   dev_server:
-    host: 127.0.0.1
-    port: 8080
+    host: localhost
+    port: 3035
+    hmr: false
     https: false
 
 test:
   <<: *default
 
+  # Compile test packs to a separate directory
   public_output_path: packs-test
 
 production:
   <<: *default
+
+  # Production depends on precompilation of packs prior to booting for performance.
+  compile: false
+
+  # Cache manifest.json for performance
+  cache_manifest: true