about summary refs log tree commit diff
path: root/config
diff options
context:
space:
mode:
authorValentin Ouvrard <valentin210594@gmail.com>2017-04-08 13:39:09 +1100
committerGitHub <noreply@github.com>2017-04-08 13:39:09 +1100
commit3e4eb9c95fc8d8f3fff1db90215d5050214adc59 (patch)
treec9f709f2582f8fe97c72b4faa8bc0811bbbb4deb /config
parent93e53a3311c33b218d1cf7ae26b74056dfabc909 (diff)
parentfc7b8307190b8f472b526d99bc10db58153850d5 (diff)
Merge branch 'master' into master
Diffstat (limited to 'config')
-rw-r--r--config/application.rb2
-rw-r--r--config/initializers/blacklists.rb1
-rw-r--r--config/initializers/rabl_init.rb1
-rw-r--r--config/locales/de.yml22
-rw-r--r--config/locales/devise.de.yml50
-rw-r--r--config/locales/devise.eo.yml61
-rw-r--r--config/locales/doorkeeper.eo.yml113
-rw-r--r--config/locales/doorkeeper.fr.yml10
-rw-r--r--config/locales/en.yml6
-rw-r--r--config/locales/eo.yml164
-rw-r--r--config/locales/fi.yml20
-rw-r--r--config/locales/fr.yml1
-rw-r--r--config/locales/simple_form.en.yml2
-rw-r--r--config/locales/simple_form.eo.yml46
-rw-r--r--config/locales/simple_form.fi.yml6
-rw-r--r--config/puma.rb2
-rw-r--r--config/routes.rb2
17 files changed, 450 insertions, 59 deletions
diff --git a/config/application.rb b/config/application.rb
index 17b7a19cc..9a5c0d0d3 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -24,7 +24,7 @@ module Mastodon
 
     # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
     # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
-    config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi]
+    config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi, :eo]
     config.i18n.default_locale    = :en
 
     # config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
diff --git a/config/initializers/blacklists.rb b/config/initializers/blacklists.rb
index 52646e64d..6db7be7dc 100644
--- a/config/initializers/blacklists.rb
+++ b/config/initializers/blacklists.rb
@@ -2,4 +2,5 @@
 
 Rails.application.configure do
   config.x.email_domains_blacklist = ENV.fetch('EMAIL_DOMAIN_BLACKLIST') { 'mvrht.com' }
+  config.x.email_domains_whitelist = ENV.fetch('EMAIL_DOMAIN_WHITELIST') { '' }  
 end
diff --git a/config/initializers/rabl_init.rb b/config/initializers/rabl_init.rb
index f7be0c607..132a42144 100644
--- a/config/initializers/rabl_init.rb
+++ b/config/initializers/rabl_init.rb
@@ -1,4 +1,5 @@
 Rabl.configure do |config|
+  config.json_engine       = Oj
   config.cache_all_output  = false
   config.cache_sources     = Rails.env.production?
   config.include_json_root = false
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 320bd3144..d44845c6b 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1,14 +1,14 @@
 ---
 de:
   about:
-    about_mastodon: Mastodon ist ein <em>freier, quelloffener</em> soziales Netzwerkserver. Eine <em>dezentralisierte</em> Alternative zu kommerziellen Plattformen, verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am <em>sozialen Netzwerk</em> teilnehmen.
+    about_mastodon: Mastodon ist ein <em>freier, quelloffener</em> soziales Netzwerkserver. Als <em>dezentralisierte</em> Alternative zu kommerziellen Plattformen verhindert es die Risiken, die entstehen, wenn eine einzelne Firma deine Kommunikation monopolisiert. Jeder kann Mastodon verwenden und ganz einfach am <em>sozialen Netzwerk</em> teilnehmen.
     get_started: Erste Schritte
     source_code: Quellcode
     terms: AGB
   accounts:
     follow: Folgen
-    followers: Folger
-    following: Folgt
+    followers: Follower
+    following: Gefolgt
     nothing_here: Hier gibt es nichts!
     people_followed_by: Nutzer, denen %{name} folgt
     people_who_follow: Nutzer, die %{name} folgen
@@ -27,7 +27,7 @@ de:
     reset_password: Passwort zurücksetzen
     set_new_password: Neues Passwort setzen
   authorize_follow:
-    error: Das entfernte Profil konnte nicht geladen werden
+    error: Das Profil konnte nicht geladen werden
     follow: Folgen
     prompt_html: 'Du (<strong>%{self}</strong>) möchtest dieser Person folgen:'
     title: "%{acct} folgen"
@@ -55,25 +55,25 @@ de:
   notification_mailer:
     favourite:
       body: 'Dein Beitrag wurde von %{name} favorisiert:'
-      subject: "%{name} hat deinen Beitrag favorisiert"
+      subject: "%{name} hat deinen Beitrag favorisiert."
     follow:
       body: "%{name} folgt dir jetzt!"
-      subject: "%{name} folgt dir nun"
+      subject: "%{name} folgt dir jetzt."
     follow_request:
       body: "%{name} möchte dir folgen:"
-      subject: "%{name} möchte dir folgen"
+      subject: "%{name} möchte dir folgen."
     mention:
       body: "%{name} hat dich erwähnt:"
-      subject: "%{name} hat dich erwähnt"
+      subject: "%{name} hat dich erwähnt."
     reblog:
       body: 'Dein Beitrag wurde von %{name} geteilt:'
-      subject: "%{name} teilte deinen Beitrag"
+      subject: "%{name} teilte deinen Beitrag."
   pagination:
     next: Vorwärts
     prev: Zurück
   remote_follow:
-    acct: Dein Nutzername@Domain, von dem du dieser Person folgen möchtest
-    missing_resource: Die erforderliche Weiterleitungs-URL konnte leider in deinem Profil nicht gefunden werden
+    acct: Dein Nutzername@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:'
   settings:
diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml
index 181502f9c..58bfaa3d6 100644
--- a/config/locales/devise.de.yml
+++ b/config/locales/devise.de.yml
@@ -2,59 +2,59 @@
 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"
+      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."
+      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 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 von dem Link aus einer 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 können."
+      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."
+      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."
     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."
+      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: "nicht gefunden"
+      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."
diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml
new file mode 100644
index 000000000..b786647dd
--- /dev/null
+++ b/config/locales/devise.eo.yml
@@ -0,0 +1,61 @@
+---
+eo:
+  devise:
+    confirmations:
+      confirmed: Via konto estas konfirmita.
+      send_instructions: Vi ricevos instrukciojn por konfirmi vian konton post kelkaj minutoj.
+      send_paranoid_instructions: Se via retpoŝt-adreso ekzistas en nia datumbazo, vi baldaŭ ricevos retpoŝt-mesaĝon, kiu enhavas la instrukciojn por konfirmi vian konton.
+    failure:
+      already_authenticated: Vi jam estas ensalutita.
+      inactive: Via konto ankoraŭ ne estas konfirmita.
+      invalid: Malĝusta retpoŝt-adreso aŭ pasvorto.
+      last_attempt: Vi ankoraŭ povas provi unufoje antaŭ ol via konto estos ŝlosita.
+      locked: Via konto estas ŝlosita.
+      not_found_in_database: Malĝusta retpoŝt-adreso aŭ pasvorto.
+      timeout: Via sesio eksiĝis. Bonvolu reensaluti por daŭrigi.
+      unauthenticated: Vi devas ensaluti aŭ membriĝi por daŭrigi.
+      unconfirmed: Vi devas konfirmi vian konton por daŭrigi.
+    mailer:
+      confirmation_instructions:
+        subject: Instrukcioj por konfirmi
+      password_change:
+        subject: Via pasvorto estis ŝanĝita senprobleme.
+      reset_password_instructions:
+        subject: Instrukcioj por ŝanĝi la pasvorton
+      unlock_instructions:
+        subject: Instrukcioj por malŝlosi la konton
+    omniauth_callbacks:
+      failure: 'Ni ne povis aŭtentigi vin per %{kind}: ''%{reason}''.'
+      success: Aŭtentigita senprobleme per %{kind}.
+    passwords:
+      no_token: Vi ne povas iri al tiu paĝo per alia vojo ol retpoŝt-mesaĝo por ŝanĝi pasvorton. Se vi venas de tia retpoŝt-mesaĝo, kontrolu ke vi uzis la tutan URL.
+      send_instructions: Vi ricevos retpoŝt-mesaĝon kun instrukcioj por ŝanĝi vian pasvorton post kelkaj minutoj.
+      send_paranoid_instructions: Se via retpoŝt-adreso ekzistas en nia datumbazo, vi ricevos ligilon por ŝanĝi vian pasvorton per retpoŝt-mesaĝo.
+      updated: Via pasvorto estis redaktita senprobleme, vi nun estas ensalutita.
+      updated_not_active: Via pasvorto estis redaktita senprobleme.
+    registrations:
+      destroyed: Ĝis! Via konto estis forigita senprobleme. Ni esperas revidi vin baldaŭ.
+      signed_up: Bonvenon! Vi membriĝis senprobleme.
+      signed_up_but_inactive: Vi bone membriĝis, sed vi ankoraŭ ne povas ensaluti ĉar via konto ne estis konfirmita.
+      signed_up_but_locked: Vi bone membriĝis, sed vi ne povas ensaluti ĉar via konto estas ŝlosita.
+      signed_up_but_unconfirmed: Retpoŝt-mesaĝo kun via ligilo por konfirmi vian konton estis sendita al via retpoŝt-adreso. Bonvolu uzi tiun ligilon por konfirmi vian konton.
+      update_needs_confirmation: Vi bone aktualigis vian konton, sed ni bezonas kontroli vian novan retpoŝt-adreson. Bonvolu kontroli viajn retpoŝt-mesaĝojn kaj uzi la ligilon por konfirmi vian novan retpoŝt-adreson.
+      updated: Via konto estis aktualigita senprobleme.
+    sessions:
+      already_signed_out: Elsalutita.
+      signed_in: Ensalutita.
+      signed_out: Elsalutita.
+    unlocks:
+      send_instructions: Vi ricevos retpoŝt-mesaĝon kun instrukcioj por malŝlosi vian konton post kelkaj minutoj.
+      send_paranoid_instructions: Se via retpoŝt-adreso ekzistas en nia datumbazo, vi ricevos ligilon por malŝlosi vian konton per retpoŝt-mesaĝo.
+      unlocked: Via konto estis malŝlosita senprobleme, vi nun estas ensalutita.
+  errors:
+    messages:
+      already_confirmed: jam estis konfirmita, bonvolu provi ensaluti
+      confirmation_period_expired: devas esti konfirmita en %{period}, bonvolu repeti
+      expired: eksiĝis, bonvolu repeti
+      not_found: ne estis trovita
+      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:'
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
new file mode 100644
index 000000000..33cc7cc19
--- /dev/null
+++ b/config/locales/doorkeeper.eo.yml
@@ -0,0 +1,113 @@
+---
+eo:
+  activerecord:
+    attributes:
+      doorkeeper/application:
+        name: Nomo
+        redirect_uri: URI de plusendo
+    errors:
+      models:
+        doorkeeper/application:
+          attributes:
+            redirect_uri:
+              fragment_present: ne povas enhavi eron.
+              invalid_uri: devas esti valida URI.
+              relative_uri: devas esti absoluta URI.
+              secured_uri: devas esti HTTPS/SSL-a URI.
+  doorkeeper:
+    applications:
+      buttons:
+        authorize: Rajtigi
+        cancel: Rezigni
+        destroy: Detrui
+        edit: Redakti
+        submit: Sendi
+      confirmations:
+        destroy: Ĉu vi certas?
+      edit:
+        title: Redakti aplikaĵon
+      form:
+        error: Ups! Kontrolu vian formularon ĉu estas eraroj
+      help:
+        native_redirect_uri: Uzu %{native_redirect_uri} por lokaj provoj
+        redirect_uri: Uzu unu linion por ĉiu URI
+        scopes: Apartigu ampleksojn per spacetoj. Lasu malplena por uzi la senŝanĝajn ampleksojn.
+      index:
+        callback_url: URL vokita per referenco
+        name: Nomo
+        new: Nova Aplikaĵo
+        title: Viaj aplikaĵoj
+      new:
+        title: Nova aplikaĵo
+      show:
+        actions: Agoj
+        application_id: Identigo de la aplikaĵo
+        callback_urls: URL-j vokitaj per referenco
+        scopes: Ampleksoj
+        secret: Sekreto
+        title: 'Aplikaĵo: %{name}'
+    authorizations:
+      buttons:
+        authorize: Rajtigi
+        deny: Rifuzi
+      error:
+        title: Eraro okazis
+      new:
+        able_to: Povos
+        prompt: La aplikaĵo %{client_name} petas aliron al via konto
+        title: Rajtigo bezonata
+      show:
+        title: Rajtiga kodo
+    authorized_applications:
+      buttons:
+        revoke: Malrajtigi
+      confirmations:
+        revoke: Ĉu vi certas?
+      index:
+        application: Aplikaĵo
+        created_at: Rajtigita
+        date_format: "%Y-%m-%d %H:%M:%S"
+        scopes: Ampleksoj
+        title: Viaj rajtigitaj aplikaĵoj
+    errors:
+      messages:
+        access_denied: La posedanto de la rimedo aŭ la rajtiga servilo rifuzis vian peton.
+        credential_flow_not_configured: La sendado de la identigiloj de la posedanto de la rimedo malsukcesis ĉar Doorkeeper.configure.resource_owner_from_credentials ne estis agordita.
+        invalid_client: La aŭtentigo de la kliento malsukcesis ĉar la kliento estas nekonata, aŭ mankis peto aŭtentigi, aŭ la aŭtentig-metodo ne estas subtenata.
+        invalid_grant: La rajtiga konsento ne estas valida, ne plu estas valida, estis forigita, ne kongruas kun la plusenda URI uzita en la aŭtentiga peto, aŭ estis sendita al alia kliento.
+        invalid_redirect_uri: La plusenda URI uzita en estas valida.
+        invalid_request: Mankis al la peto nepra parametro, enhavas nesubtenatan parametran valoron, aŭ la peto simple estas misformita.
+        invalid_resource_owner: La donitaj identigiloj pri la posedanto de la rimedo ne estas validaj, aŭ tiu ne povas esti trovita.
+        invalid_scope: La petita amplekso ne estas valida, estas nekonata, aŭ estas misformita.
+        invalid_token:
+          expired: La atingoĵetono eskiĝis.
+          revoked: La atingoĵetono estis rifuzita.
+          unknown: La atingoĵetono ne estas valida.
+        resource_owner_authenticator_not_configured: La posedanto de la rimedo ne povis esti trovita ĉar Doorkeeper.configure.resource_owner_authenticator ne estas agordita.
+        server_error: La rajtiga servilo rimarkis neatenditan kondiĉon, kiu malpermesis al ĝi plenumi la peton.
+        temporarily_unavailable: La rajtiga servilo ne povas nun plenumi la peton pro dumtempa superŝarĝo aŭ prizorgado de la servilo.
+        unauthorized_client: La kliento ne rajtas fari tian peton uzante tiun metodon.
+        unsupported_grant_type: La tipo de la rajtiga konsento ne estas subtenata de la rajtiga servilo.
+        unsupported_response_type: La rajtiga servilo ne subtenas tian respondon.
+    flash:
+      applications:
+        create:
+          notice: Aplikaĵo kreita.
+        destroy:
+          notice: Aplikaĵo forigita.
+        update:
+          notice: Aplikaĵo aktualigita.
+      authorized_applications:
+        destroy:
+          notice: Aplikaĵo malrajtigita.
+    layouts:
+      admin:
+        nav:
+          applications: Aplikaĵoj
+          oauth2_provider: OAuth2-provizanto
+      application:
+        title: OAuth-a rajtigo bezonata
+    scopes:
+      follow: sekvi, bloki, malbloki kaj malsekvi kontojn
+      read: legi la datumojn de via konto
+      write: mesaĝi kiel vi
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index c94e5c095..be109df9c 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -62,7 +62,7 @@ fr:
       buttons:
         revoke: Annuler
       confirmations:
-        revoke: Êtes-vous certain?
+        revoke: Êtes-vous certain ?
       index:
         application: Application
         created_at: Créé le
@@ -72,19 +72,19 @@ fr:
     errors:
       messages:
         access_denied: Le propriétaire de la ressource ou le serveur d'autorisation a refusé la demande.
-        credential_flow_not_configured: Le flux des identifiants du mot de passe du propriétaire de la ressource a échoué en raison de Doorkeeper.configure.resource_owner_from_credentials n'est pas configuré.
+        credential_flow_not_configured: Le flux des identifiants du mot de passe du propriétaire de la ressource a échoué car Doorkeeper.configure.resource_owner_from_credentials n'est pas configuré.
         invalid_client: L'authentification du client a échoué à cause d'un client inconnu, d'aucune authentification de client incluse, ou d'une méthode d'authentification non prise en charge.
         invalid_grant: Le consentement d'autorisation accordé n'est pas valide, a expiré, est annulé, ne concorde pas avec l'URL de redirection utilisée dans la demande d'autorisation, ou a été émis à un autre client.
         invalid_redirect_uri: L'URL de redirection n'est pas valide.
         invalid_request: La demande manque un paramètre requis, inclut une valeur de paramètre non prise en charge, ou est autrement mal formée.
-        invalid_resource_owner: Les identifiants fournis du propriétaire de la ressource ne sont pas valides, ou le propriétaire de la ressource ne peut être trouvé
+        invalid_resource_owner: Les identifiants fournis par le propriétaire de la ressource ne sont pas valides, ou le propriétaire de la ressource ne peut être trouvé
         invalid_scope: La portée demandée n'est pas valide, est inconnue, ou est mal formée.
         invalid_token:
           expired: Le jeton d'accès a expiré
           revoked: Le jeton d'accès a été révoqué
           unknown: Le jeton d'accès n'est pas valide
-        resource_owner_authenticator_not_configured: La recherche du propriétaire de la ressource a échoué en raison de Doorkeeper.configure.resource_owner_authenticator n'est pas configuré.
-        server_error: Le serveur d'autorisation a rencontré une condition inattendue qui l'a empêché de remplir la demande.
+        resource_owner_authenticator_not_configured: La recherche du propriétaire de la ressource a échoué car Doorkeeper.configure.resource_owner_authenticator n'est pas configuré.
+        server_error: Le serveur d'autorisation a rencontré une condition inattendue l'empêchant de remplir la demande.
         temporarily_unavailable: Le serveur d'autorisation est actuellement incapable de traiter la demande à cause d'une surcharge ou d'un entretien temporaire du serveur.
         unauthorized_client: Le client n'est pas autorisé à effectuer cette demande à l'aide de cette méthode.
         unsupported_grant_type: Le type de consentement d'autorisation n'est pas pris en charge par le serveur d'autorisation.
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 750af0b7a..aa3a732f9 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -5,8 +5,8 @@ en:
     about_this: About this instance
     apps: Apps
     business_email: 'Business e-mail:'
-    contact: Contact
     closed_registrations: Registrations are currently closed on this instance.
+    contact: Contact
     description_headline: What is %{domain}?
     domain_count_after: other instances
     domain_count_before: Connected to
@@ -163,3 +163,7 @@ en:
     invalid_otp_token: Invalid two-factor code
   will_paginate:
     page_gap: "&hellip;"
+  media_attachments:
+    validations:
+      too_many: Cannot attach more than 4 files
+      images_and_video: Cannot attach a video to a status that already contains images
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
new file mode 100644
index 000000000..3644b37bb
--- /dev/null
+++ b/config/locales/eo.yml
@@ -0,0 +1,164 @@
+---
+eo:
+  about:
+    about_mastodon: Mastodon estas <em>senpaga, malfermitkoda</em> socia reto. Ĝi estas <em>sencentra</em> alia eblo al komercaj servoj. Ĝi evitigas, ke unusola firmao regu vian tutan komunikadon. Elektu servilon, kiun vi fidas. Kiu ajn estas via elekto, vi povas interagi kun ĉiuj aliaj uzantoj. Iu ajn povas krei sian propran aperaĵon de Mastodon en sia servilo, kaj partopreni en la <em>socia reto</em> tute glate.
+    about_this: Pri tiu aperaĵo
+    apps: Aplikaĵoj
+    business_email: 'Profesia retpoŝt-adreso:'
+    contact: Kontakti
+    description_headline: Kio estas %{domain}?
+    domain_count_after: aliaj aperaĵoj
+    domain_count_before: Konektita al
+    features:
+      api: Malfermita API por aplikaĵoj kaj servoj
+      blocks: Kompletaj iloj por bloki kaj kaŝi
+      characters: Po 500 signoj por ĉiu mesaĝo
+      chronology: Tempolinioj laŭtempaj
+      ethics: 'Etike kreita: neniu reklamo, neniu ŝpurado'
+      gifv: Eblo diskonigi etajn videojn kaj GIFV
+      privacy: Videbleco agordita laŭ la mesaĝo
+      public: Publikaj tempolinioj
+    features_headline: Kiel Mastodon estas malsimila
+    get_started: Komenci
+    links: Ligiloj
+    other_instances: Aliaj aperaĵoj
+    source_code: Fontkodo
+    status_count_after: mesaĝoj
+    status_count_before: Kiu publikigis
+    terms: Terms
+    user_count_after: uzantoj
+    user_count_before: Hejmo de
+  accounts:
+    follow: Sekvi
+    followers: Sekvantoj
+    following: Sekvatoj
+    nothing_here: Estas nenio ĉi tie!
+    people_followed_by: Sekvatoj de %{name}
+    people_who_follow: Sekvantoj de %{name}
+    posts: Mesaĝoj
+    remote_follow: Fore sekvi
+    unfollow: Malsekvi
+  application_mailer:
+    settings: 'Ŝanĝi la retpoŝt-mesaĝajn preferojn: %{link}'
+    signature: Sciigoj de Mastodon el %{instance}
+    view: 'Vidi:'
+  applications:
+    invalid_url: La URL donita ne estas valida
+  auth:
+    change_password: Ŝanĝi pasvorton
+    didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi?
+    forgot_password: Pasvorto forgesita?
+    login: Ensaluti
+    logout: Elsaluti
+    register: Membriĝi
+    resend_confirmation: Resendi la instrukciojn por konfirmi
+    reset_password: Ŝanĝi la pasvorton
+    set_new_password: Elekti novan pasvorton
+  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:
+      about_x_hours: "%{count}h"
+      about_x_months: "%{count}mo"
+      about_x_years: "%{count}j"
+      almost_x_years: "%{count}j"
+      half_a_minute: Ĵus
+      less_than_x_minutes: "%{count}m"
+      less_than_x_seconds: Ĵus
+      over_x_years: "%{count}j"
+      x_days: "%{count}t"
+      x_minutes: "%{count}m"
+      x_months: "%{count}mo"
+      x_seconds: "%{count}s"
+  exports:
+    blocks: Vi blokas
+    csv: CSV
+    follows: Vi sekvas
+    storage: Mediaĵa konservado
+  generic:
+    changes_saved_msg: Ŝanĝoj senprobleme konservitaj!
+    powered_by: povigita de %{link}
+    save_changes: Konservi la ŝanĝojn
+    validation_errors:
+      one: Io ne okazis senprobleme! Bonvolu konsulti la suban erar-raporton.
+      other: Io ne okazis senprobleme! Bonvolu konsulti la subajn %{count} erar-raportojn.
+  imports:
+    preface: Vi povas alporti kelkajn datumojn, kiel listojn de ĉiuj homoj kiujn vi sekvas aŭ blokas, al via konto de ĉi tiu aperaĵo, per dosiero elportita de alia aperaĵo.
+    success: Viaj datumoj estis senprobleme alportitaj kaj estos traktitaj kiel planite.
+    types:
+      blocking: Listo de blokitoj
+      following: Listo de sekvatoj
+    upload: Alporti
+  landing_strip_html: <strong>%{name}</strong> estas uzanto en <strong>%{domain}</strong>. Vi povas sekvi tiun aŭ interagi kun tiu, se vi havas konton ie ajn en la Fediverse. Se vi ne havas, vi povas <a href="%{sign_up_path}">membriĝi ĉi tie.</a>.
+  notification_mailer:
+    digest:
+      body: 'Jen eta resumo de tio, kio okazis en %{instance}, ekde kiam vi laste vizitis en %{since}:'
+      mention: "%{name} menciis vin en:"
+      new_followers_summary:
+        one: Vi ekhavis novan sekvanton! Jej!
+        other: Vi ekhavis %{count} novajn sekvantojn! Mirinde!
+      subject:
+        one: "1 nova sciigo ekde via lasta vizito \U0001F418"
+        other: "%{count} novaj sciigoj ekde via lasta vizito \U0001F418"
+    favourite:
+      body: '%{name} favoris vian mesaĝon:'
+      subject: "%{name} favoris vian mesaĝon"
+    follow:
+      body: "%{name} eksekvis vin:"
+      subject: "%{name} eksekvis vin"
+    follow_request:
+      body: "%{name} petis sekvi vin:"
+      subject: '%{name} petis sekvi vin'
+    mention:
+      body: '%{name} menciis vin en:'
+      subject: '%{name} menciis vin'
+    reblog:
+      body: '%{name} diskonigis vian mesaĝon:'
+      subject: "%{name} diskonigis vian mesaĝon"
+  pagination:
+    next: Sekva
+    prev: Malsekva
+  remote_follow:
+    acct: Enmetu vian uzantnomo@aperaĵo de kie vi volas sekvi tiun uzanton
+    missing_resource: La URL de plusendado ne povis esti trovita
+    proceed: Daŭrigi por plusendi
+    prompt: 'Vi eksekvos:'
+  settings:
+    authorized_apps: Rajtigitaj aplikaĵoj
+    back: Reveni al Mastodon
+    edit_profile: Redakti la profilon
+    export: Elporti datumojn
+    import: Alporti
+    preferences: Preferoj
+    settings: Agordoj
+    two_factor_auth: Dufaktora aŭtentigo
+  statuses:
+    open_in_web: Malfermi retumile
+    over_character_limit: limo de %{max} signoj trapasita
+    show_more: Montri pli
+    visibilities:
+      private: Montri nur al sekvantoj
+      public: Publika
+      unlisted: Publika, sed ne aperos en publikaj tempolinioj
+  stream_entries:
+    click_to_show: Alklaki por montri
+    reblogged: diskonigita
+    sensitive_content: Tikla enhavo
+  time:
+    formats:
+      default: "%b %d, %Y, %H:%M"
+  two_factor_auth:
+    description_html: Se vi ebligas <strong>dufaktoran aŭtentigon</strong>, vi bezonos vian poŝtelefonon por ensaluti, ĉar ĝi kreos nombrojn, kiujn vi devos entajpi.
+    disable: Malebligi
+    enable: Ebligi
+    instructions_html: "<strong>Skanu tiun QR-kodon per Google Authenticator aŭ per simila aplikaĵo de via poŝtelefono</strong>. De tiam, la aplikaĵo kreos nombrojn, kiujn vi devos entajpi."
+    plaintext_secret_html: 'Rekte legebla sekreta kodo: <samp>%{secret}</samp>'
+    warning: Se vi ne povas agordi aŭtentigan aplikaĵon nun, elektu "malebligi" aŭ vi ne plu povos ensaluti.
+  users:
+    invalid_email: La retpoŝt-adreso ne estas valida
+    invalid_otp_token: La dufaktora aŭtentigila kodo ne estas valida
+  will_paginate:
+    page_gap: "&hellip;"
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 3bcfe5c20..947d3f646 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -16,18 +16,18 @@ fi:
       chronology: Aikajana on kronologisessa järjestyksessä
       ethics: 'Eettinen suunnittelu: ei mainoksia, no seurantaa'
       gifv: GIFV settejä ja lyhyitä videoita
-      privacy: Julkaisu kohtainen yksityisyys aseuts
+      privacy: Julkaisu kohtainen yksityisyys asetus
       public: Julkiset aikajanat
     features_headline: Mikä erottaa Mastodonin muista
     get_started: Aloita käyttö
     links: Linkit
     other_instances: Muut palvelimet
     source_code: Lähdekoodi
-    status_count_after: statukset
-    status_count_before: Kuka loi
+    status_count_after: statusta
+    status_count_before: Ovat luoneet
     terms: Ehdot
-    user_count_after: käyttäjät
-    user_count_before: Koti käyttäjälle
+    user_count_after: käyttäjälle
+    user_count_before: Koti
   accounts:
     follow: Seuraa
     followers: Seuraajat
@@ -89,7 +89,7 @@ fi:
     preface: Voit tuoda tiettyä dataa kaikista ihmisistä joita seuraat tai estät tilillesi tälle palvelimelle tiedostoista, jotka on luotu toisella palvelimella
     success: Datasi on onnistuneesti ladattu ja käsitellään pian
     types:
-      blocking: Esto lista
+      blocking: Estetyt lista
       following: Seuratut lista
     upload: Lähetä
   landing_strip_html: <strong>%{name}</strong> on käyttäjä domainilla <strong>%{domain}</strong>. Voit seurata tai vuorovaikuttaa heidän kanssaan jos sinulla on tili yleisessä verkossa. Jos sinulla ei ole tiliä, voit <a href="%{sign_up_path}">rekisteröityä täällä</a>.
@@ -130,9 +130,9 @@ fi:
     authorized_apps: Valtuutetut ohjelmat
     back: Takaisin Mastodoniin
     edit_profile: Muokkaa profiilia
-    export: Datan vienti
-    import: Datan tuonti
-    preferences: Mieltymykset
+    export: Vie dataa
+    import: Tuo dataa
+    preferences: Ominaisuudet
     settings: Asetukset
     two_factor_auth: Kaksivaiheinen tunnistus
   statuses:
@@ -154,7 +154,7 @@ fi:
     description_html: Jos otat käyttöön <strong>kaksivaiheisen tunnistuksen</stron>, kirjautumiseen vaaditaan puhelin, joka voi generoida tokeneita kirjautumista varten.
     disable: Poista käytöstä
     enable: Ota käyttöön
-    instructions_html: "<strong>Skannaa tämä QR-koodi Google Authenticator tai samanlaiseen sovellukseen puhelimellasi</strong>. Tästä hetkestä lähtien, ohjelma generoi tokenit mikä sinun tarvitsee syöttää sisäänkirjautuessa."
+    instructions_html: "<strong>Skannaa tämä QR-koodi Google Authenticator tai samanlaiseen sovellukseen puhelimellasi</strong>. Tästä hetkestä lähtien ohjelma generoi koodin, mikä sinun tarvitsee syöttää sisäänkirjautuessa."
     plaintext_secret_html: 'Plain-text secret: <samp>%{secret}</samp>'
     warning: Jos et juuri nyt voi konfiguroida authenticator-applikaatiota juuri nyt, sinun pitäisi klikata "Poista käytöstä" tai et voi kirjautua sisään.
   users:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 758501403..e9989e383 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -5,6 +5,7 @@ fr:
     about_this: À propos de cette instance
     apps: Applications
     business_email: E-mail professionnel
+    closed_registrations: Les inscriptions sont actuellement fermées sur cette instance. . 
     description_headline: Qu'est-ce que %{domain} ?
     domain_count_after: autres instances
     domain_count_before: Connectés à
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index df4f6ca00..dfc67fdfd 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -38,7 +38,7 @@ en:
         follow: Send e-mail when someone follows you
         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 reblogs your status
+        reblog: Send e-mail when someone boosts your status
     'no': 'No'
     required:
       mark: "*"
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
new file mode 100644
index 000000000..8c89a56e7
--- /dev/null
+++ b/config/locales/simple_form.eo.yml
@@ -0,0 +1,46 @@
+---
+eo:
+  simple_form:
+    hints:
+      defaults:
+        avatar: En la formato PNG, GIF aŭ JPG. Ĝis 2Mo. Estos malgrandigita al 120x120px
+        display_name: 30 signoj pleje
+        header: En la formato PNG, GIF aŭ JPG. Ĝis 2Mo. Estos malgrandigita al 700x335px
+        locked: Vi devos aprobi ĉiun peton de sekvado, kaj viaj mesaĝoj estos senŝanĝe nur por viaj sekvantoj.
+        note: 160 signoj pleje
+      imports:
+        data: Dosiero CSV el alia aperaĵo de Mastodon
+    labels:
+      defaults:
+        avatar: Profilbildo
+        confirm_new_password: Konfirmi novan pasvorton
+        confirm_password: Konfirmi la pasvorton
+        current_password: Nuna pasvorto
+        data: Datumoj
+        display_name: Publika nomo
+        email: Retpoŝt-adreso
+        header: Kapbildo
+        locale: Lingvo
+        locked: Privatigi la konton
+        new_password: Nova pasvorto
+        note: Sinprezento
+        otp_attempt: Dufaktora identigilo
+        password: Pasvorto
+        setting_default_privacy: Videbleco de la mesaĝoj
+        type: Tipo de alportado
+        username: Uzantnomo
+      interactions:
+        must_be_follower: Kaŝi la sciigojn de homoj, kiuj ne sekvas vin
+        must_be_following: Kaŝi la sciigojn de homoj, kiujn vi ne sekas
+      notification_emails:
+        digest: Sendi resumajn retpoŝt-mesaĝojn
+        favourite: Sendi retpoŝt-mesaĝon, kiam iu favoras mesaĝon de vi
+        follow: Sendi retpoŝt-mesaĝon, kiam iu eksekvas vin
+        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'
+    required:
+      mark: "*"
+      text: bezonata
+    'yes': 'Jes'
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 02c11752f..2bacd6d2c 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -6,7 +6,7 @@ fi:
         avatar: PNG, GIF tai JPG. Korkeintaan 2MB. Skaalataan kokoon 120x120px
         display_name: Korkeintaan 30 merkkiä
         header: PNG, GIF tai JPG. Korkeintaan 2MB. Skaalataan kokoon 700x335px
-        locked: Vaatii sinun manuaalisesti hyväksymään seuraajat ja asettaa julkaisun yksityisyyden vain seuraajille
+        locked: Vaatii sinun manuaalisesti hyväksymään seuraajat ja asettaa julkaisujen yksityisyyden vain seuraajille
         note: Korkeintaan 160 merkkiä
       imports:
         data: CSV tiedosto tuotu toiselta Mastodon palvelimelta
@@ -17,7 +17,7 @@ fi:
         confirm_password: Varmista salasana
         current_password: Nykyinen salasana
         data: Data
-        display_name: Näyttö nimi
+        display_name: Näykyvä nimi
         email: Sähköpostiosoite
         header: Header
         locale: Kieli
@@ -38,7 +38,7 @@ fi:
         follow: Lähetä s-posti kun joku seuraa sinua
         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 uudestaanblogaa julkaisusi
+        reblog: Lähetä s-posti kun joku buustaa julkaisusi
     'no': 'Ei'
     required:
       mark: "*"
diff --git a/config/puma.rb b/config/puma.rb
index 550129bdc..191f00cca 100644
--- a/config/puma.rb
+++ b/config/puma.rb
@@ -9,7 +9,7 @@ preload_app!
 
 on_worker_boot do
   if ENV['HEROKU'] # Spawn the workers from Puma, to only use one dyno
-    @sidekiq_pid ||= spawn('bundle exec sidekiq -q default -q mailers -q push')
+    @sidekiq_pid ||= spawn('bundle exec sidekiq -q default -q push -q pull -q mailers ')
   end
 
   ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
diff --git a/config/routes.rb b/config/routes.rb
index ca77191f7..315ad5da5 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -11,7 +11,7 @@ Rails.application.routes.draw do
   end
 
   use_doorkeeper do
-    controllers authorizations: 'oauth/authorizations'
+    controllers authorizations: 'oauth/authorizations', authorized_applications: 'oauth/authorized_applications'
   end
 
   get '.well-known/host-meta', to: 'xrd#host_meta', as: :host_meta