diff --git a/anki/locale/libanki_fi_FI.po b/anki/locale/libanki_fi_FI.po
new file mode 100644
index 000000000..efa11d2e6
--- /dev/null
+++ b/anki/locale/libanki_fi_FI.po
@@ -0,0 +1,519 @@
+# translation of libanki_fi_FI.po to Finnish
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Niklas Laxström , 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: libanki_fi_FI\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-12-07 20:22+0100\n"
+"PO-Revision-Date: 2008-12-07 20:38+0200\n"
+"Last-Translator: Niklas Laxström \n"
+"Language-Team: Finnish \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: deck.py:592
+#, python-format
+msgid ""
+"\n"
+"Congratulations!
You have finished the deck for now.
\n"
+"%(next)s\n"
+"
\n"
+"- There are %(waiting)d\n"
+"\n"
+"spaced cards.
\n"
+"- There are %(suspended)d\n"
+"\n"
+"suspended cards."
+msgstr ""
+"\n"
+"Onnittelut!
Olet käynyt pakan läpi toistaiseksi.
\n"
+"%(next)s\n"
+"
\n"
+"- Pakassa on %(waiting)d\n"
+"\n"
+"välitettyä korttia.
\n"
+"- Pakassa on %(suspended)d\n"
+"\n"
+"jäädytettyä korttia."
+
+#: stats.py:497
+#, python-format
+msgid "%(count)s %(gradename)s kanji."
+msgstr "%(count)s %(gradename)s-kanjia."
+
+#: stats.py:495
+#, python-format
+msgid "%(gradename)s: %(count)s of %(total)s (%(percent)0.1f%%)."
+msgstr ""
+
+#: stats.py:286 stats.py:288
+#, python-format
+msgid "%0.1f seconds"
+msgstr "%0.1f sekuntia"
+
+#: stats.py:270 stats.py:277 stats.py:300
+#, python-format
+msgid "%s ago"
+msgstr "%s sitten"
+
+#: utils.py:29
+#, python-format
+msgid "%s day"
+msgid_plural "%s days"
+msgstr[0] "%s päivä"
+msgstr[1] "%s päivää"
+
+#: utils.py:30
+#, python-format
+msgid "%s hour"
+msgid_plural "%s hours"
+msgstr[0] "%s tunti"
+msgstr[1] "%s tuntia"
+
+#: utils.py:31
+#, python-format
+msgid "%s minute"
+msgid_plural "%s minutes"
+msgstr[0] "%s minuutti"
+msgstr[1] "%s minuuttia"
+
+#: utils.py:28
+#, python-format
+msgid "%s month"
+msgid_plural "%s months"
+msgstr[0] "%s kuukausi"
+msgstr[1] "%s kuukautta"
+
+#: utils.py:32
+#, python-format
+msgid "%s second"
+msgid_plural "%s seconds"
+msgstr[0] "%s sekunti"
+msgstr[1] "%s sekuntia"
+
+#: utils.py:27
+#, python-format
+msgid "%s year"
+msgid_plural "%s years"
+msgstr[0] "%s vuosi"
+msgstr[1] "%s vuotta"
+
+#: stats.py:367 stats.py:370 stats.py:373 stats.py:376
+#, python-format
+msgid "%(a)d (%(b)0.1f/day)"
+msgstr "%(a)d (%(b)0.1f/päivä)"
+
+#: stats.py:364
+#, python-format
+msgid "%(a)d/day, %(b)d/mon"
+msgstr "%(a)d/päivä, %(b)d/kuukausi"
+
+#: stats.py:353
+#, python-format
+msgid "%0.0f days"
+msgstr "%0.0f päivää"
+
+#: stats.py:354 stats.py:356 stats.py:358 stats.py:360 stats.py:362
+#, python-format
+msgid "%0.1f cards/day"
+msgstr "%0.1f korttia/päivä"
+
+#: stats.py:351
+msgid "Averages
"
+msgstr "Keskiarvot
"
+
+#: stats.py:330
+msgid "Card counts
"
+msgstr "Korttiluvut
"
+
+#: stats.py:338
+msgid "Correct answers
"
+msgstr "Oikeat vastaukset
"
+
+#: stats.py:519
+#, python-format
+msgid "Kanji statistics
The %d seen cards in this deck contain:"
+msgstr ""
+
+#: stats.py:523
+#, python-format
+msgid "%d total unique kanji."
+msgstr ""
+
+#: sync.py:194
+#, python-format
+msgid ""
+"\n"
+"Added/Changed | Here | Server |
\n"
+"Cards | %(lc)d | %(rc)d |
\n"
+"Facts | %(lf)d | %(rf)d |
\n"
+"Models | %(lm)d | %(rm)d |
\n"
+"%(media)s\n"
+"
"
+msgstr ""
+"\n"
+"Lisätty tai muutettu | Paikallisesti | Palvelimella |
\n"
+"Kortteja | %(lc)d | %(rc)d |
\n"
+"Faktoja | %(lf)d | %(rf)d |
\n"
+"Malleja | %(lm)d | %(rm)d |
\n"
+"%(media)s\n"
+"
"
+
+#: stats.py:264
+msgid "Added"
+msgstr "Lisätty"
+
+#: stats.py:370
+msgid "Added last month"
+msgstr "Lisätty viimekuussa"
+
+#: stats.py:367
+msgid "Added last week"
+msgstr "Lisätty viimeviikolla"
+
+#: exporting.py:224
+msgid "Anki deck (*.anki)"
+msgstr "Anki-pakka (*.anki)"
+
+#: exporting.py:54
+msgid "Anki decks (*.anki)"
+msgstr "Anki-pakat (*.anki)"
+
+#: deck.py:295
+msgid "Answer Card"
+msgstr "korttiin vastaaminen"
+
+#: deck.py:551
+#, python-format
+msgid ""
+"At the same time tomorrow:
\n"
+"- There will be %(wait)d cards waiting for review
\n"
+"- There will be %(new)d\n"
+"\n"
+"new cards waiting"
+msgstr ""
+"Samaan aikaan huomenna:
\n"
+"- %(wait)d uutta korttia odottaa kertausta
\n"
+"- %(new)d\n"
+"\n"
+"uutta korttia odottamassa"
+
+#: stats.py:286
+msgid "Average Time"
+msgstr "Vastausnopeus"
+
+#: stats.py:354
+msgid "Average reps"
+msgstr "Kertauksia"
+
+#: stats.py:364
+msgid "Avg. added"
+msgstr "Uusia"
+
+#: stdmodels.py:31
+msgid "Basic"
+msgstr "Perusmalli"
+
+#: stdmodels.py:77
+msgid "Cantonese"
+msgstr "Kantoni"
+
+#: graphs.py:106 graphs.py:128 graphs.py:142 graphs.py:164
+msgid "Cards"
+msgstr "Kortit"
+
+#: exporting.py:225
+msgid "Cards in tab-separated text file (*.txt)"
+msgstr "Sarkaimella erotettu korttitiedosto (*.txt)"
+
+#: models.py:26
+msgid "Center"
+msgstr "Keskitä"
+
+#: stats.py:267
+msgid "Changed"
+msgstr "Muutettu"
+
+#: deck.py:1472
+msgid "Database file damaged. Restore from backup."
+msgstr "Tietokantatiedosto on vahingoittunut. Palauta toimiva versio Ankin automaattisesti tekemistä varmuuskopioista."
+
+#: graphs.py:165
+msgid "Day"
+msgstr "Päivä"
+
+#: graphs.py:107 graphs.py:129 graphs.py:143
+msgid "Days"
+msgstr "Päivää"
+
+#: stats.py:315
+msgid "Deck Statistics"
+msgstr "Pakan tilastot"
+
+#: stats.py:316
+#, python-format
+msgid "Deck created: %s ago
"
+msgstr "Luotu: %s sitten
"
+
+#: deck.py:1480
+msgid "Deck was missing a model"
+msgstr "Pakassa ei ollut mallia"
+
+#: deck.py:1506
+#, python-format
+msgid "Deleted %d cards with missing fact"
+msgstr "Poistettiin %d faktatonta korttia"
+
+#: deck.py:1514
+#, python-format
+msgid "Deleted %d cards with no card model"
+msgstr "Poistettiin %d korttia, joilla ei ollut kelvollista korttimallia"
+
+#: deck.py:1527
+#, python-format
+msgid "Deleted %d dangling fields"
+msgstr "Poistettiin %d eksynyttä kenttää"
+
+#: deck.py:1499
+#, python-format
+msgid "Deleted %d facts with missing fields"
+msgstr "Poistettiin %d faktaa, joista puuttui kenttiä"
+
+#: deck.py:1519
+#, python-format
+msgid "Deleted %d facts with no cards"
+msgstr "Poistettiin %d kortitonta faktaa"
+
+#: stats.py:273
+msgid "Due"
+msgstr "Erääntynyt"
+
+#: stats.py:275
+msgid "Ease"
+msgstr "Helppous"
+
+#: latex.py:104
+msgid "Error executing 'latex' or 'dvipng' - are they installed?"
+msgstr "Komennon latex tai dvipng suorittaminen epäonnistui – tarkista, että ne ovat asennettu."
+
+#: exporting.py:226
+msgid "Facts in tab-separated text file (*.txt)"
+msgstr "Sarkaimella erotetut faktatiedostot (*.txt)"
+
+#: deck.py:1845
+msgid "File is in use by another process"
+msgstr "Tiedosto on toisen prosessin käytössä"
+
+#: stats.py:266
+msgid "First Review"
+msgstr "Ensimmäinen kertaus"
+
+#: stats.py:376
+msgid "First last month"
+msgstr "Ensimmäisiä viimekuussa"
+
+#: stats.py:373
+msgid "First last week"
+msgstr "Ensimmäisiä viimeviikolla"
+
+#: stats.py:343
+#, python-format
+msgid "First-seen cards: %(gNewYes%)0.1f%% (%(gNewYes)d of %(gNewTotal)d)
"
+msgstr "Ensi kertaa nähdyt kortit: %(gNewYes%)0.1f%% (%(gNewYes)d/%(gNewTotal)d)
"
+
+#: stats.py:290
+msgid "Inherited Tags"
+msgstr "Perityt tägit"
+
+#: stats.py:274 stats.py:353
+msgid "Interval"
+msgstr "Aikaväli"
+
+#: stdmodels.py:46
+msgid "Japanese"
+msgstr "Japani"
+
+#: stats.py:534
+msgid "Jouyou levels:"
+msgstr "Jouyou-tasot:"
+
+#: stats.py:278
+msgid "Last Due"
+msgstr "Viimeksi erääntynyt"
+
+#: stats.py:282
+msgid "Last Ease"
+msgstr "Edellinen helppous"
+
+#: stats.py:281
+msgid "Last Interval"
+msgstr "Edellinen aikaväli"
+
+#: models.py:27
+msgid "Left"
+msgstr "Vasen"
+
+#: stdmodels.py:99
+msgid "Mandarin"
+msgstr "Mandariini"
+
+#: graphs.py:104 graphs.py:244
+msgid "Mature"
+msgstr "Vahva"
+
+#: stats.py:339
+#, python-format
+msgid "Mature cards: %(gMatureYes%)0.1f%% (%(gMatureYes)d of %(gMatureTotal)d)
"
+msgstr "Varmat kortit: %(gMatureYes%)0.1f%% (%(gMatureYes)d/%(gMatureTotal)d)
"
+
+#: stats.py:331
+#, python-format
+msgid "Mature cards: %(old)d (%(oldP)0.2f%%)
"
+msgstr "Varmat kortit: %(old)d (%(oldP)0.2f%%)
"
+
+#: media.py:152 media.py:154 media.py:155
+msgid "Media Missing"
+msgstr "Media puuttuu"
+
+#: deck.py:1016
+#, python-format
+msgid "Model '%s' has wrong card model count"
+msgstr "Mallissa %s on väärä korttimallilukema"
+
+#: deck.py:1020
+#, python-format
+msgid "Model '%s' has wrong field model count"
+msgstr "Mallissa %s on väärä kenttämallilukema"
+
+#: graphs.py:242
+msgid "New"
+msgstr "Uusi"
+
+#: deck.py:564
+msgid "No cards are due."
+msgstr "Ei erääntyneitä kortteja."
+
+#: stats.py:313
+msgid "Please add some cards first."
+msgstr "Lisää ensin kortteja.
"
+
+#: stats.py:362
+msgid "Reps last month"
+msgstr "Kertauksia viimekuussa"
+
+#: stats.py:360
+msgid "Reps last week"
+msgstr "Kertauksia viimeviikolla"
+
+#: stats.py:358
+msgid "Reps next month"
+msgstr "Kertauksia ensikuussa"
+
+#: stats.py:356
+msgid "Reps next week"
+msgstr "Kertauksia ensiviikolla"
+
+#: deck.py:2225
+msgid "Review cards in order due"
+msgstr "Kertaa kortit erääntymisjärjestyksessä"
+
+#: deck.py:2226
+msgid "Review cards in random order"
+msgstr "Kertaa kortit satunnaisessa järjestyksessä"
+
+#: deck.py:2224
+msgid "Review newest cards first"
+msgstr "Kertaa uusimmat kortit ensin"
+
+#: deck.py:2223
+msgid "Review oldest cards first"
+msgstr "Kertaa vanhimmat kortit ensin"
+
+#: stats.py:284
+msgid "Reviews"
+msgstr "Kertauksia"
+
+#: models.py:28
+msgid "Right"
+msgstr "Oikea"
+
+#: deck.py:2218
+msgid "Show new cards after all other cards"
+msgstr "Näytä uudet kortit muiden korttien jälkeen"
+
+#: deck.py:2212
+msgid "Show new cards in order they were added"
+msgstr "Näytä uudet kortit lisäysjärjestyksessä"
+
+#: deck.py:2211
+msgid "Show new cards in random order"
+msgstr "Näytä uudet kortit satunnaisessa järjestyksessä"
+
+#: deck.py:2217
+msgid "Spread new cards out through reviews"
+msgstr "Levitä uudet kortit läpi koko kertausten"
+
+#: exporting.py:153 exporting.py:185
+msgid "Text files (*.txt)"
+msgstr "Tekstitiedostot (*.txt)"
+
+#: deck.py:1486
+msgid "The current model didn't exist"
+msgstr "Nykyistä mallia ei ollut olemassa."
+
+#: deck.py:561
+#, python-format
+msgid "The next card will be shown in %s"
+msgstr "Aikaa seuraavan kortin näyttämiseen on vielä %s"
+
+#: stats.py:288
+msgid "Total Time"
+msgstr "Aikaa yhteensä"
+
+#: stats.py:328
+#, python-format
+msgid "Total number of cards: %d
"
+msgstr "Kortteja yhteensä: %d
"
+
+#: deck.py:758
+msgid "Unknown"
+msgstr "Tuntematon"
+
+#: stats.py:335
+#, python-format
+msgid "Unseen cards: %(new)d (%(newP)0.2f%%)
"
+msgstr "Näkemättömiä kortteja: %(new)d (%(newP)0.2f%%)
"
+
+#: graphs.py:103 graphs.py:243
+msgid "Young"
+msgstr "Nuori"
+
+#: stats.py:341
+#, python-format
+msgid "Young cards: %(gYoungYes%)0.1f%% (%(gYoungYes)d of %(gYoungTotal)d)
"
+msgstr "Uusia kortteja: %(gYoungYes%)0.1f%% (%(gYoungYes)d/%(gYoungTotal)d)
"
+
+#: stats.py:333
+#, python-format
+msgid "Young cards: %(young)d (%(youngP)0.2f%%)
"
+msgstr "Uusia kortteja: %(young)d (%(youngP)0.2f%%)
"
+
+#: models.py:130
+msgid "[invalid question/answer format]"
+msgstr "[kysymys- tai vastausmuoto on virheellinen]"
+
+# ei voi taivuttaa genetiiviin :<
+#: stats.py:272
+#, python-format
+msgid "in %s"
+msgstr "%s myöhemmin"
+
+#: deck.py:581
+msgid "unknown"
+msgstr "tuntematon"