From 69fc95a2f5e7cf90fcf86c24f8e7eabd6cfd67d6 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 12:09:33 +0200
Subject: [PATCH 01/13] Create Finnish translation for Mastodon

Create Finnish translation for Mastodon
---
 .../javascripts/components/locales/fi.jsx     | 68 +++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 app/assets/javascripts/components/locales/fi.jsx

diff --git a/app/assets/javascripts/components/locales/fi.jsx b/app/assets/javascripts/components/locales/fi.jsx
new file mode 100644
index 000000000..5bef99923
--- /dev/null
+++ b/app/assets/javascripts/components/locales/fi.jsx
@@ -0,0 +1,68 @@
+const fi = {
+  "column_back_button.label": "Takaisin",
+  "lightbox.close": "Sulje",
+  "loading_indicator.label": "Ladataan...",
+  "status.mention": "Mainitse @{name}",
+  "status.delete": "Poista",
+  "status.reply": "Vastaa",
+  "status.reblog": "Boostaa",
+  "status.favourite": "Tykkää",
+  "status.reblogged_by": "{name} boostattu",
+  "status.sensitive_warning": "Arkaluontoista sisältöä",
+  "status.sensitive_toggle": "Klikkaa nähdäksesi",
+  "video_player.toggle_sound": "Äänet päälle/pois",
+  "account.mention": "Mainitse @{name}",
+  "account.edit_profile": "Muokkaa",
+  "account.unblock": "Salli @{name}",
+  "account.unfollow": "Lopeta seuraaminen",
+  "account.block": "Estä @{name}",
+  "account.follow": "Seuraa",
+  "account.posts": "Postit",
+  "account.follows": "Seuraa",
+  "account.followers": "Seuraajia",
+  "account.follows_you": "Seuraa sinua",
+  "account.requested": "Odottaa hyväksyntää",
+  "getting_started.heading": "Päästä alkuun",
+  "getting_started.about_addressing": "Voit seurata ihmisiä jos tiedät heidän käyttäjänimensä ja domainin missä he ovat syöttämällä e-mail-esque osoitteen Etsi kenttään.",
+  "getting_started.about_shortcuts": "Jos etsimäsi henkilö on samassa domainissa kuin sinä, pelkkä käyttäjänimi kelpaa. Sama pätee kun mainitset ihmisiä statuksessasi",
+  "getting_started.open_source_notice": "Mastodon Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia githubissa {github}. {apps}.",
+  "column.home": "Koti",
+  "column.community": "Paikallinen aikajana",
+  "column.public": "Yhdistetty aikajana",
+  "column.notifications": "Ilmoitukset",
+  "tabs_bar.compose": "Luo",
+  "tabs_bar.home": "Koti",
+  "tabs_bar.mentions": "Maininnat",
+  "tabs_bar.public": "Yleinen aikajana",
+  "tabs_bar.notifications": "Ilmoitukset",
+  "compose_form.placeholder": "Mitä sinulla on mielessä?",
+  "compose_form.publish": "Toot",
+  "compose_form.sensitive": "Merkitse media herkäksi",
+  "compose_form.spoiler": "Piiloita teksti varoituksen taakse",
+  "compose_form.private": "Merkitse yksityiseksi",
+  "compose_form.privacy_disclaimer": "Sinun yksityinen status toimitetaan mainitsemallesi käyttäjille domaineissa {domains}. Luotatko {domainsCount, plural, one {tähän palvelimeen} other {näihin palvelimiin}}? Postauksen yksityisyys toimii van Mastodon palvelimilla. Jos {domains} {domainsCount, plural, one {ei ole Mastodon palvelin} other {eivät ole Mastodon palvelin}}, viestiin ei tule Yksityinen-merkintää, ja sitä voidaan boostata tai muuten tehdä näkyväksi muille vastaanottajille.",
+  "compose_form.unlisted": "Älä näytä julkisilla aikajanoilla",
+  "navigation_bar.edit_profile": "Muokkaa profiilia",
+  "navigation_bar.preferences": "Ominaisuudet",
+  "navigation_bar.community_timeline": "Paikallinen aikajana",
+  "navigation_bar.public_timeline": "Yleinen aikajana",
+  "navigation_bar.logout": "Kirjaudu ulos",
+  "reply_indicator.cancel": "Peruuta",
+  "search.placeholder": "Hae",
+  "search.account": "Tili",
+  "search.hashtag": "Hashtag",
+  "upload_button.label": "Lisää mediaa",
+  "upload_form.undo": "Peru",
+  "notification.follow": "{name} seurasi sinua",
+  "notification.favourite": "{name} tykkäsi statuksestasi",
+  "notification.reblog": "{name} boostasi statustasi",
+  "notification.mention": "{name} mainitsi sinut",
+  "notifications.column_settings.alert": "Työpöytä ilmoitukset",
+  "notifications.column_settings.show": "Näytä sarakkeessa",
+  "notifications.column_settings.follow": "Uusia seuraajia:",
+  "notifications.column_settings.favourite": "Tykkäyksiä:",
+  "notifications.column_settings.mention": "Mainintoja:",
+  "notifications.column_settings.reblog": "Boosteja:",
+};
+
+export default fi;

From 87854745e966e05231321477d34e8a233814788d Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 12:42:09 +0200
Subject: [PATCH 02/13] Create new translation file

Still in progress. Should be done shortly
---
 config/locales/fi.yml | 164 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 164 insertions(+)
 create mode 100644 config/locales/fi.yml

diff --git a/config/locales/fi.yml b/config/locales/fi.yml
new file mode 100644
index 000000000..33e17a78b
--- /dev/null
+++ b/config/locales/fi.yml
@@ -0,0 +1,164 @@
+---
+fi:
+  about:
+    about_mastodon: Mastodon on <em>ilmainen, avoimeen lähdekoodiin perustuva</em> sosiaalinen verkosto. <em>Hajautettu</em> vaihtoehto kaupallisille alustoille, se välttää eiskit yhden yrityksen monopolisoinnin sinun viestinnässäsi. Valitse palvelin mihin luotat &mdash; minkä tahansa valitset, voit vuorovaikuttaa muiden kanssa. Kuka tahansa voi luoda Mastodon palvelimen ja ottaa osaa <em>sosiaaliseen verkkoon</em> saumattomasti.
+    about_this: Tietoja tästä palvelimesta
+    apps: Ohjelmat
+    business_email: 'Business e-mail:'
+    contact: Ota yhteyttä
+    description_headline: Mikä on %{domain}?
+    domain_count_after: muut palvelimet
+    domain_count_before: Yhdistyneenä
+    features:
+      api: Avoin API ohjelmille ja palveluille
+      blocks: Rikkaat esto ja hiljennys työkalut
+      characters: 500 kirjainta per viesti
+      chronology: Aikajana on kronologisessa järjestyksessä
+      ethics: 'Eettinen suunnittelu: ei mainoksia, no seurantaa'
+      gifv: GIFV settejä ja lyhyitä videoita
+      privacy: Julkaisu kohtainen yksityisyys aseuts
+      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
+    terms: Ehdot
+    user_count_after: käyttäjät
+    user_count_before: Koti käyttäjälle
+  accounts:
+    follow: Seuraa
+    followers: Seuraajat
+    following: Seuratut
+    nothing_here: Täällä ei ole mitään!
+    people_followed_by: Henkilöitä joita %{name} seuraa
+    people_who_follow: Henkilöt jotka seuraa %{name}
+    posts: Postaukset
+    remote_follow: Etäseuranta
+    unfollow: Lopeta seuraaminen
+  application_mailer:
+    settings: 'Muokkaa sähköposti asetuksia: %{link}'
+    signature: Mastodon ilmoituksia palvelimelta %{instance}
+    view: 'Katso:'
+  applications:
+    invalid_url: Annettu URL on väärä
+  auth:
+    change_password: Tunnukset
+    didnt_get_confirmation: Etkö saanut varmennus ohjeita?
+    forgot_password: Unohditko salasanasi?
+    login: Kirjaudu sisään
+    logout: Kirjaudu ulos
+    register: Rekisteröidy
+    resend_confirmation: Lähetä varmennus ohjeet uudestaan
+    reset_password: Palauta Salasana
+    set_new_password: Aseta uusi salasana
+  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:
+      about_x_hours: "%{count}t"
+      about_x_months: "%{count}kk"
+      about_x_years: "%{count}v"
+      almost_x_years: "%{count}v"
+      half_a_minute: Juuri nyt
+      less_than_x_minutes: "%{count}m"
+      less_than_x_seconds: Juuri nyt
+      over_x_years: "%{count}v"
+      x_days: "%{count}pv"
+      x_minutes: "%{count}m"
+      x_months: "%{count}kk"
+      x_seconds: "%{count}s"
+  exports:
+    blocks: Estosi
+    csv: CSV
+    follows: Seurattavat
+    storage: Mediasi
+  generic:
+    changes_saved_msg: Muutokset onnistuneesti tallenettu!
+    powered_by: powered by %{link}
+    save_changes: Tallenna muutokset
+    validation_errors:
+      one: Jokin ei ole viellä oikein! Katso virhe alapuolelta
+      other: Jokin ei ole viellä oikein! Katso %{count} virhettä alapuolelta
+  imports:
+    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
+      following: Seuratut lista
+    upload: Lähetä
+  landing_strip_html: <strong>%{name}</strong> is a user on <strong>%{domain}</strong>. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
+  notification_mailer:
+    digest:
+      body: 'Here is a brief summary of what you missed on %{instance} since your last visit on %{since}:'
+      mention: "%{name} mentioned you in:"
+      new_followers_summary:
+        one: You have acquired one new follower! Yay!
+        other: You have gotten %{count} new followers! Amazing!
+      subject:
+        one: "1 new notification since your last visit \U0001F418"
+        other: "%{count} new notifications since your last visit \U0001F418"
+    favourite:
+      body: 'Your status was favourited by %{name}:'
+      subject: "%{name} favourited your status"
+    follow:
+      body: "%{name} is now following you!"
+      subject: "%{name} is now following you"
+    follow_request:
+      body: "%{name} has requested to follow you"
+      subject: 'Pending follower: %{name}'
+    mention:
+      body: 'You were mentioned by %{name} in:'
+      subject: You were mentioned by %{name}
+    reblog:
+      body: 'Your status was boosted by %{name}:'
+      subject: "%{name} boosted your status"
+  pagination:
+    next: Next
+    prev: Prev
+  remote_follow:
+    acct: Enter your username@domain you want to follow from
+    missing_resource: Could not find the required redirect URL for your account
+    proceed: Proceed to follow
+    prompt: 'You are going to follow:'
+  settings:
+    authorized_apps: Authorized apps
+    back: Back to Mastodon
+    edit_profile: Edit profile
+    export: Data export
+    import: Import
+    preferences: Preferences
+    settings: Settings
+    two_factor_auth: Two-factor Authentication
+  statuses:
+    open_in_web: Open in web
+    over_character_limit: character limit of %{max} exceeded
+    show_more: Show more
+    visibilities:
+      private: Only show to followers
+      public: Public
+      unlisted: Public, but do not display on the public timeline
+  stream_entries:
+    click_to_show: Click to show
+    reblogged: boosted
+    sensitive_content: Sensitive content
+  time:
+    formats:
+      default: "%b %d, %Y, %H:%M"
+  two_factor_auth:
+    description_html: If you enable <strong>two-factor authentication</strong>, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
+    disable: Disable
+    enable: Enable
+    instructions_html: "<strong>Scan this QR code into Google Authenticator or a similiar app on your phone</strong>. From now on, that app will generate tokens that you will have to enter when logging in."
+    plaintext_secret_html: 'Plain-text secret: <samp>%{secret}</samp>'
+    warning: If you cannot configure an authenticator app right now, you should click "disable" or you won't be able to login.
+  users:
+    invalid_email: The e-mail address is invalid
+    invalid_otp_token: Invalid two-factor code
+  will_paginate:
+    page_gap: "&hellip;"

From f9b4f30de6829ec1a34fe37ae713865177ac1420 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 13:07:09 +0200
Subject: [PATCH 03/13] updated final translation

updated final translation
---
 config/locales/fi.yml | 92 +++++++++++++++++++++----------------------
 1 file changed, 46 insertions(+), 46 deletions(-)

diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 33e17a78b..3bcfe5c20 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -92,73 +92,73 @@ fi:
       blocking: Esto lista
       following: Seuratut lista
     upload: Lähetä
-  landing_strip_html: <strong>%{name}</strong> is a user on <strong>%{domain}</strong>. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can <a href="%{sign_up_path}">sign up here</a>.
+  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>.
   notification_mailer:
     digest:
-      body: 'Here is a brief summary of what you missed on %{instance} since your last visit on %{since}:'
-      mention: "%{name} mentioned you in:"
+      body: 'Tässä on pieni yhteenveto palvelimelta %{instance} viimeksi kun olit paikalla %{since}:'
+      mention: "%{name} mainitsi sinut:"
       new_followers_summary:
-        one: You have acquired one new follower! Yay!
-        other: You have gotten %{count} new followers! Amazing!
+        one: Olet saanut yhden uuden seuraajan! Jee!
+        other: Olet saanut %{count} uutta seuraajaa! Loistavaa!
       subject:
-        one: "1 new notification since your last visit \U0001F418"
-        other: "%{count} new notifications since your last visit \U0001F418"
+        one: "1 uusi ilmoitus viimeisen käyntisi jälkeen \U0001F418"
+        other: "%{count} uutta ilmoitusta viimeisen käyntisi jälkeen \U0001F418"
     favourite:
-      body: 'Your status was favourited by %{name}:'
-      subject: "%{name} favourited your status"
+      body: 'Statuksestasi tykkäsi %{name}:'
+      subject: "%{name} tykkäsi sinun statuksestasi"
     follow:
-      body: "%{name} is now following you!"
-      subject: "%{name} is now following you"
+      body: "%{name} seuraa nyt sinua!"
+      subject: "%{name} seuraa nyt sinua"
     follow_request:
-      body: "%{name} has requested to follow you"
-      subject: 'Pending follower: %{name}'
+      body: "%{name} on pyytänyt seurata sinua"
+      subject: 'Odottava seuraus pyyntö: %{name}'
     mention:
-      body: 'You were mentioned by %{name} in:'
-      subject: You were mentioned by %{name}
+      body: 'Sinut mainitsi %{name} postauksessa:'
+      subject: Sinut mainitsi %{name}
     reblog:
-      body: 'Your status was boosted by %{name}:'
-      subject: "%{name} boosted your status"
+      body: 'Sinun statustasi boostasi %{name}:'
+      subject: "%{name} boostasi statustasi"
   pagination:
-    next: Next
-    prev: Prev
+    next: Seuraava
+    prev: Edellinen
   remote_follow:
-    acct: Enter your username@domain you want to follow from
-    missing_resource: Could not find the required redirect URL for your account
-    proceed: Proceed to follow
-    prompt: 'You are going to follow:'
+    acct: Syötä sinun käyttäjänimesi@domain jos haluat seurata palvelimelta
+    missing_resource: Ei löydetty tarvittavaa uudelleenohjaavaa URL-linkkiä tilillesi
+    proceed: Siirry seuraamiseen
+    prompt: 'Sinä aiot seurata:'
   settings:
-    authorized_apps: Authorized apps
-    back: Back to Mastodon
-    edit_profile: Edit profile
-    export: Data export
-    import: Import
-    preferences: Preferences
-    settings: Settings
-    two_factor_auth: Two-factor Authentication
+    authorized_apps: Valtuutetut ohjelmat
+    back: Takaisin Mastodoniin
+    edit_profile: Muokkaa profiilia
+    export: Datan vienti
+    import: Datan tuonti
+    preferences: Mieltymykset
+    settings: Asetukset
+    two_factor_auth: Kaksivaiheinen tunnistus
   statuses:
-    open_in_web: Open in web
-    over_character_limit: character limit of %{max} exceeded
-    show_more: Show more
+    open_in_web: Avaa webissä
+    over_character_limit: sallittu kirjanmäärä %{max} ylitetty
+    show_more: Näytä lisää
     visibilities:
-      private: Only show to followers
-      public: Public
-      unlisted: Public, but do not display on the public timeline
+      private: Näytä vain seuraajille
+      public: Julkinen
+      unlisted: Julkinen, mutta älä näytä julkisella aikajanalla
   stream_entries:
-    click_to_show: Click to show
+    click_to_show: Klikkaa näyttääksesi
     reblogged: boosted
-    sensitive_content: Sensitive content
+    sensitive_content: Herkkä materiaali
   time:
     formats:
       default: "%b %d, %Y, %H:%M"
   two_factor_auth:
-    description_html: If you enable <strong>two-factor authentication</strong>, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
-    disable: Disable
-    enable: Enable
-    instructions_html: "<strong>Scan this QR code into Google Authenticator or a similiar app on your phone</strong>. From now on, that app will generate tokens that you will have to enter when logging in."
+    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."
     plaintext_secret_html: 'Plain-text secret: <samp>%{secret}</samp>'
-    warning: If you cannot configure an authenticator app right now, you should click "disable" or you won't be able to login.
+    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:
-    invalid_email: The e-mail address is invalid
-    invalid_otp_token: Invalid two-factor code
+    invalid_email: Virheellinen sähköposti
+    invalid_otp_token: Virheellinen kaksivaihe tunnistus koodi
   will_paginate:
     page_gap: "&hellip;"

From b0f4c9b91fe2acbf2d2384a3928f15a710a5f880 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 13:25:46 +0200
Subject: [PATCH 04/13] finnish translation

finnish translation
---
 config/locales/simple_form.fi.yml | 46 +++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 config/locales/simple_form.fi.yml

diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
new file mode 100644
index 000000000..02c11752f
--- /dev/null
+++ b/config/locales/simple_form.fi.yml
@@ -0,0 +1,46 @@
+---
+fi:
+  simple_form:
+    hints:
+      defaults:
+        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
+        note: Korkeintaan 160 merkkiä
+      imports:
+        data: CSV tiedosto tuotu toiselta Mastodon palvelimelta
+    labels:
+      defaults:
+        avatar: Avatar
+        confirm_new_password: Varmista uusi salasana
+        confirm_password: Varmista salasana
+        current_password: Nykyinen salasana
+        data: Data
+        display_name: Näyttö nimi
+        email: Sähköpostiosoite
+        header: Header
+        locale: Kieli
+        locked: Tee tilistä yksityinen
+        new_password: Uusi salasana
+        note: Bio
+        otp_attempt: Kaksivaiheinen koodi
+        password: Salasana
+        setting_default_privacy: Julkaisun yksityisyys
+        type: Tuonti tyyppi
+        username: Käyttäjänimi
+      interactions:
+        must_be_follower: Estä ilmoitukset käyttäjiltä jotka eivät seuraa sinua
+        must_be_following: Estä ilmoitukset käyttäjiltä joita et seuraa
+      notification_emails:
+        digest: Send digest e-mails
+        favourite: Lähetä s-posti kun joku tykkää statuksestasi
+        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
+    'no': 'Ei'
+    required:
+      mark: "*"
+      text: vaaditaan
+    'yes': 'Kyllä'

From eabb86b1247429b016cef8711ab78983def07ae9 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 13:32:10 +0200
Subject: [PATCH 05/13] add finnish language

add finnish language
---
 app/assets/javascripts/components/locales/index.jsx | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/app/assets/javascripts/components/locales/index.jsx b/app/assets/javascripts/components/locales/index.jsx
index 203929d66..fef317887 100644
--- a/app/assets/javascripts/components/locales/index.jsx
+++ b/app/assets/javascripts/components/locales/index.jsx
@@ -5,6 +5,7 @@ import hu from './hu';
 import fr from './fr';
 import pt from './pt';
 import uk from './uk';
+import fi from './fi';
 
 const locales = {
   en,
@@ -14,6 +15,7 @@ const locales = {
   fr,
   pt,
   uk
+  fi
 };
 
 export default function getMessagesForLocale (locale) {

From 22f88b845ad3238d2970222d276d952135e26884 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 13:33:43 +0200
Subject: [PATCH 06/13] add finnish translation

add finnish translation
---
 app/assets/javascripts/components/containers/mastodon.jsx | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/app/assets/javascripts/components/containers/mastodon.jsx b/app/assets/javascripts/components/containers/mastodon.jsx
index 6dc08bb4c..cbb7b85bc 100644
--- a/app/assets/javascripts/components/containers/mastodon.jsx
+++ b/app/assets/javascripts/components/containers/mastodon.jsx
@@ -46,6 +46,7 @@ import fr from 'react-intl/locale-data/fr';
 import pt from 'react-intl/locale-data/pt';
 import hu from 'react-intl/locale-data/hu';
 import uk from 'react-intl/locale-data/uk';
+import fi from 'react-intl/locale-data/fi';
 import getMessagesForLocale from '../locales';
 import { hydrateStore } from '../actions/store';
 import createStream from '../stream';
@@ -58,7 +59,7 @@ const browserHistory = useRouterHistory(createBrowserHistory)({
   basename: '/web'
 });
 
-addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk]);
+addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk, ...fi]);
 
 const Mastodon = React.createClass({
 

From ae95f35fe604a840f3c3573516c740dc84d8dee6 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 13:34:26 +0200
Subject: [PATCH 07/13] add finnish translation

add finnish translation
---
 app/helpers/settings_helper.rb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb
index 74215e8df..e01f7d0cc 100644
--- a/app/helpers/settings_helper.rb
+++ b/app/helpers/settings_helper.rb
@@ -10,6 +10,7 @@ module SettingsHelper
     hu: 'Magyar',
     uk: 'Українська',
     'zh-CN': '简体中文',
+    fi: 'Suomi',
   }.freeze
 
   def human_locale(locale)

From 6501ffdadc593e4e0cd691533906a7396f552902 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 13:35:12 +0200
Subject: [PATCH 08/13] add finnish translation

add finnish translation
---
 config/application.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/application.rb b/config/application.rb
index 9d32f30cb..17b7a19cc 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']
+    config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi]
     config.i18n.default_locale    = :en
 
     # config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')

From a229840ffed572e8b6ae33969c934103499ed855 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 14:16:03 +0200
Subject: [PATCH 09/13] fixed typo

---
 app/assets/javascripts/components/locales/index.jsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/assets/javascripts/components/locales/index.jsx b/app/assets/javascripts/components/locales/index.jsx
index fef317887..72b8a5df5 100644
--- a/app/assets/javascripts/components/locales/index.jsx
+++ b/app/assets/javascripts/components/locales/index.jsx
@@ -14,7 +14,7 @@ const locales = {
   hu,
   fr,
   pt,
-  uk
+  uk,
   fi
 };
 

From 97803600ed9f2c7c6198dfc2fc521cea0e3041b4 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 14:20:50 +0200
Subject: [PATCH 10/13] add finnish translation

add finnish translation
---
 config/locales/devise.fi.yml | 61 ++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 config/locales/devise.fi.yml

diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml
new file mode 100644
index 000000000..79fe81230
--- /dev/null
+++ b/config/locales/devise.fi.yml
@@ -0,0 +1,61 @@
+---
+fi:
+  devise:
+    confirmations:
+      confirmed: Sähköpostisi on onnistuneesti vahvistettu.
+      send_instructions: Saat kohta sähköpostiisi ohjeet kuinka voit aktivoida tilisi.
+      send_paranoid_instructions: Jos sähköpostisi on meidän tietokannassa, saat pian ohjeet sen varmentamiseen.
+    failure:
+      already_authenticated: Olet jo kirjautunut sisään.
+      inactive: Tiliäsi ei ole viellä aktivoitu.
+      invalid: Virheellinen %{authentication_keys} tai salasana.
+      last_attempt: Sinulla on yksi yritys jäljellä tai tili lukitaan.
+      locked: Tili on lukittu.
+      not_found_in_database: Virheellinen %{authentication_keys} tai salasana.
+      timeout: Sessiosi on umpeutunut. Kirjaudu sisään jatkaaksesi.
+      unauthenticated: Sinun tarvitsee kirjautua sisään tai rekisteröityä jatkaaksesi.
+      unconfirmed: Sinun tarvitsee varmentaa sähköpostisi jatkaaksesi.
+    mailer:
+      confirmation_instructions:
+        subject: 'Mastodon: Varmistus ohjeet'
+      password_change:
+        subject: 'Mastodon: Salasana vaihdettu'
+      reset_password_instructions:
+        subject: 'Mastodon: Salasanan vaihto ohjeet'
+      unlock_instructions:
+        subject: 'Mastodon: Avauksen ohjeet'
+    omniauth_callbacks:
+      failure: Varmennus %{kind} epäonnistui koska "%{reason}".
+      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: Saat sähköpostitse ohjeet salasanan palautukseen muutaman minuutin kuluessa.
+      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.
+    registrations:
+      destroyed: Näkemiin! Tilisi on onnistuneesti peruttu. Toivottavasti näemme joskus uudestaan.
+      signed_up: Tervetuloa! Rekisteröitymisesi onnistu.
+      signed_up_but_inactive: Olet onnistuneesti rekisteröitynyt, mutta emme voi kirjata sinua sisään koska tiliäsi ei ole viellä aktivoitu.
+      signed_up_but_locked: Olet onnistuneesti rekisteröitynyt, mutta emme voi kirjata sinua sisään koska tilisi on lukittu.
+      signed_up_but_unconfirmed: Varmistuslinkki on lähetty sähköpostiisi. Seuraa sitä jotta tilisi voidaan aktivoida.
+      update_needs_confirmation: Tilisi on onnistuneesti päivitetty, mutta meidän tarvitsee vahvistaa sinun uusi sähköpostisi. Tarkista sähköpostisi ja seuraa viestissä tullutta linkkiä varmistaaksesi uuden osoitteen..
+      updated: Tilisi on onnistuneesti päivitetty.
+    sessions:
+      already_signed_out: Ulos kirjautuminen onnistui.
+      signed_in: Sisäänkirjautuminen onnistui.
+      signed_out: Ulos kirjautuminen onnistui.
+    unlocks:
+      send_instructions: Saat sähköpostiisi pian ohjeet, jolla voit avata tilisi uudestaan.
+      send_paranoid_instructions: Jos tilisi on olemassa, saat sähköpostiisi pian ohjeet tilisi avaamiseen.
+      unlocked: Tilisi on avattu onnistuneesti. Kirjaudu normaalisti sisään.
+  errors:
+    messages:
+      already_confirmed: on jo varmistettu. Yritä kirjautua sisään
+      confirmation_period_expired: pitää varmistaa %{period} sisällä, ole hyvä ja pyydä uusi
+      expired: on erääntynyt, ole hyvä ja pyydä uusi
+      not_found: ei löydy
+      not_locked: ei ollut lukittu
+      not_saved:
+        one: '1 virhe esti %{resource} tallennuksen:'
+        other: "%{count} virhettä esti %{resource} tallennuksen:"

From 85a8b62ca2c58109ca776540f4e0588bc49eb28e Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 14:43:07 +0200
Subject: [PATCH 11/13] add finnish translation

add finnish translation
---
 config/locales/doorkeeper.fi.yml | 113 +++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)
 create mode 100644 config/locales/doorkeeper.fi.yml

diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
new file mode 100644
index 000000000..a2e520a56
--- /dev/null
+++ b/config/locales/doorkeeper.fi.yml
@@ -0,0 +1,113 @@
+---
+fi:
+  activerecord:
+    attributes:
+      doorkeeper/application:
+        name: Nimi
+        redirect_uri: Uudelleenohjaus URI
+    errors:
+      models:
+        doorkeeper/application:
+          attributes:
+            redirect_uri:
+              fragment_present: ei voi sisältää osia.
+              invalid_uri: pitää olla validi URI.
+              relative_uri: pitää olla täydellinen URI.
+              secured_uri: pitää olla HTTPS/SSL URI.
+  doorkeeper:
+    applications:
+      buttons:
+        authorize: Valtuuta
+        cancel: Peruuta
+        destroy: Tuhoa
+        edit: Muokkaa
+        submit: Lähetä
+      confirmations:
+        destroy: Oletko varma?
+      edit:
+        title: Muokkaa applikaatiota
+      form:
+        error: Whoops! Tarkista lomakkeesi mahdollisten virheiden varalta
+      help:
+        native_redirect_uri: Käytä %{native_redirect_uri} paikallisiin testeihin
+        redirect_uri: Käytä yhtä riviä per URI
+        scopes: Erota scopet välilyönnein. Jätä tyhjäksi käyteksi oletus scopeja.
+      index:
+        callback_url: Callback URL
+        name: Nimi
+        new: Uusi applikaatio
+        title: Sinun applikaatiosi
+      new:
+        title: Uusi applikaatio
+      show:
+        actions: Toiminnot
+        application_id: Applikaation Id
+        callback_urls: Callback urls
+        scopes: Scopet
+        secret: Salainen avain
+        title: Applikaatio: %{name}'
+    authorizations:
+      buttons:
+        authorize: Valtuuta
+        deny: Evää
+      error:
+        title: Virhe on tapahtunut
+      new:
+        able_to: Se voi
+        prompt: Applikaatio %{client_name} pyytää lupaa tilillesi
+        title: Valtuutus vaaditaan
+      show:
+        title: Valtuutus koodi
+    authorized_applications:
+      buttons:
+        revoke: Evää
+      confirmations:
+        revoke: Oletko varma?
+      index:
+        application: Applikaatio
+        created_at: Valtuutettu
+        date_format: "%Y-%m-%d %H:%M:%S"
+        scopes: Scopet
+        title: Valtuuttamasi applikaatiot
+    errors:
+      messages:
+        access_denied: Resurssin omistaja tai valtuutus palvelin hylkäsi pyynnönr.
+        credential_flow_not_configured: Resurssin omistajan salasana epäonnistui koska Doorkeeper.configure.resource_owner_from_credentials ei ole konfiguroitu.
+        invalid_client: Asiakkaan valtuutus epäonnistui koska tuntematon asiakas, asiakas ei sisältänyt valtuutusta, tai tukematon valtuutus tapa
+        invalid_grant: Antamasi valtuutus lupa on joko väärä, erääntynyt, peruttu, ei vastaa uudelleenohjaus URI jota käytetään valtuutus pyynnössä, tai se myönnettin toiselle asiakkaalle.
+        invalid_redirect_uri: Uudelleenohjaus uri ei ole oikein.
+        invalid_request: Pyynnöstä puutti parametri, sisältää tukemattoman parametri arvonn, tai on korruptoitunut.
+        invalid_resource_owner: Annetut resurssin omistajan tunnnukset ovat väärät, tai resurssin omistajaa ei löydy
+        invalid_scope: Pyydetty scope on väärä, tuntemat, tai korruptoitunut.
+        invalid_token:
+          expired: Access token vanhentunut
+          revoked: Access token evätty
+          unknown: Access token väärä
+        resource_owner_authenticator_not_configured: Resurssin omistajan etsiminen epäonnistui koska Doorkeeper.configure.resource_owner_authenticator ei ole konfiguroitu.
+        server_error: Valtuutus palvelin kohtasi odottamattoman virheen joka esti sitä täyttämästä pyyntöä.
+        temporarily_unavailable: Valtuutus palvelin ei voi tällä hetkellä käsitellä pyyntöäsi joko väliaikaisen ruuhkan tai huollon takia.
+        unauthorized_client: Asiakas ei ole valtuutettu tekemään tätä pyyntöä käyttäen tätä metodia.
+        unsupported_grant_type: Valtuutus grant type ei ole tuettu valtuutus palvelimella.
+        unsupported_response_type: Valtuutus palvelin ei tue tätä vastaus tyyppiä.
+    flash:
+      applications:
+        create:
+          notice: Applikaatio luotu.
+        destroy:
+          notice: Applikaatio poistettu.
+        update:
+          notice: Applikaatio päivitetty.
+      authorized_applications:
+        destroy:
+          notice: Applikaatio tuhottu.
+    layouts:
+      admin:
+        nav:
+          applications: Applikaatiot
+          oauth2_provider: OAuth2 Provider
+      application:
+        title: OAuth valtuutus tarvitaan
+    scopes:
+      follow: seuraa, estä, peru esto ja lopeta tilien seuraaminen
+      read: lukea tilin dataa
+      write: julkaista puolestasi

From d3fde60297288c3d310ac43c7aae67b21cf8936f Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 14:54:53 +0200
Subject: [PATCH 12/13] fixed an sneaky peaky tpy

---
 config/locales/doorkeeper.fi.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
index a2e520a56..938590514 100644
--- a/config/locales/doorkeeper.fi.yml
+++ b/config/locales/doorkeeper.fi.yml
@@ -45,7 +45,7 @@ fi:
         callback_urls: Callback urls
         scopes: Scopet
         secret: Salainen avain
-        title: Applikaatio: %{name}'
+        title: Applikaatio %{name}'
     authorizations:
       buttons:
         authorize: Valtuuta

From 65d667dc6c72a39e6e81a06c70f4121ec4e543c1 Mon Sep 17 00:00:00 2001
From: JantsoP <jantso.porali@gmail.com>
Date: Mon, 3 Apr 2017 14:56:13 +0200
Subject: [PATCH 13/13] another typo. fuck me

---
 config/locales/doorkeeper.fi.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
index 938590514..cd1a9d058 100644
--- a/config/locales/doorkeeper.fi.yml
+++ b/config/locales/doorkeeper.fi.yml
@@ -45,7 +45,7 @@ fi:
         callback_urls: Callback urls
         scopes: Scopet
         secret: Salainen avain
-        title: Applikaatio %{name}'
+        title: 'Applikaatio: %{name}'
     authorizations:
       buttons:
         authorize: Valtuuta