Small updates
[lhc/web/wiklou.git] / languages / LanguageFi.php
index 500d4b4..2026a09 100644 (file)
@@ -7,46 +7,54 @@
 
 require_once( 'LanguageUtf8.php' );
 
-# Revised 2005-06-22 for MediaWiki 1.5a2 and CVS -- Nikerabbit
+# Revised 2005-08-25 for MediaWiki 1.6alpha -- Nikerabbit
 
 /* private */ $wgNamespaceNamesFi = array(
-  NS_MEDIA            => 'Media',
-  NS_SPECIAL          => 'Toiminnot',
-  NS_MAIN             => '',
-  NS_TALK             => 'Keskustelu',
-  NS_USER             => 'Käyttäjä',
-  NS_USER_TALK        => 'Keskustelu_käyttäjästä',
-  NS_PROJECT          => $wgMetaNamespace,
-  NS_PROJECT_TALK     => FALSE,  # Set in constructor
-  NS_IMAGE            => 'Kuva',
-  NS_IMAGE_TALK       => 'Keskustelu_kuvasta',
-  NS_MEDIAWIKI        => 'MediaWiki',
-  NS_MEDIAWIKI_TALK   => 'MediaWiki_talk',
-  NS_TEMPLATE         => 'Malline',
-  NS_TEMPLATE_TALK    => 'Keskustelu_mallineesta',
-  NS_HELP             => 'Ohje',
-  NS_HELP_TALK        => 'Keskustelu_ohjeesta',
-  NS_CATEGORY         => 'Luokka',
-  NS_CATEGORY_TALK    => 'Keskustelu_luokasta'
+       NS_MEDIA            => 'Media',
+       NS_SPECIAL          => 'Toiminnot',
+       NS_MAIN             => '',
+       NS_TALK             => 'Keskustelu',
+       NS_USER             => 'Käyttäjä',
+       NS_USER_TALK        => 'Keskustelu_käyttäjästä',
+       NS_PROJECT          => $wgMetaNamespace,
+       NS_PROJECT_TALK     => FALSE,  # Set in constructor
+       NS_IMAGE            => 'Kuva',
+       NS_IMAGE_TALK       => 'Keskustelu_kuvasta',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_talk',
+       NS_TEMPLATE         => 'Malline',
+       NS_TEMPLATE_TALK    => 'Keskustelu_mallineesta',
+       NS_HELP             => 'Ohje',
+       NS_HELP_TALK        => 'Keskustelu_ohjeesta',
+       NS_CATEGORY         => 'Luokka',
+       NS_CATEGORY_TALK    => 'Keskustelu_luokasta'
 
 ) + $wgNamespaceNamesEn;
 
 /* private */ $wgQuickbarSettingsFi = array(
-  'Ei mitään', 'Tekstin mukana, vasen', 'Tekstin mukana, oikea', 'Pysyen vasemmalla'
+       'Ei mitään', 'Tekstin mukana, vasen', 'Tekstin mukana, oikea', 'Pysyen vasemmalla'
 );
 
 /* private */ $wgSkinNamesFi = array(
-  'standard'          => 'Perus',
-  'cologneblue'       => 'Kölnin sininen',
-  'myskin'            => 'Oma tyylisivu'
+       'standard'          => 'Perus',
+       'cologneblue'       => 'Kölnin sininen',
+       'myskin'            => 'Oma tyylisivu'
 ) + $wgSkinNamesEn;
 
+/* private */ $wgDateFormatsFi = array(
+       MW_DATE_DEFAULT => 'Ei valintaa',
+       1               => '15. tammikuuta 2001 kello 16.12',
+       2               => '15. tammikuuta 2001 kello 16:12:34',
+       3               => '15.1.2001 16.12',
+       MW_DATE_ISO     => '2001-01-15 16:12:34'
+);
+
 /* private */ $wgBookstoreListFi = array(
-  'Akateeminen kirjakauppa'       => 'http://www.akateeminen.com/search/tuotetieto.asp?tuotenro=$1',
-  'Bookplus'                      => 'http://www.bookplus.fi/product.php?isbn=$1',
-  'Helsingin yliopiston kirjasto' => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1&submit=Hae&engine_helka=ON',
-  'Pääkaupunkiseudun kirjastot'   => 'http://www.helmet.fi/search*fin/i?SEARCH=$1',
-  'Tampereen seudun kirjastot'    => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1-1&lang=kaikki&mat_type=kaikki&submit=Hae&engine_tampere=ON'
+       'Akateeminen kirjakauppa'       => 'http://www.akateeminen.com/search/tuotetieto.asp?tuotenro=$1',
+       'Bookplus'                      => 'http://www.bookplus.fi/product.php?isbn=$1',
+       'Helsingin yliopiston kirjasto' => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1&submit=Hae&engine_helka=ON',
+       'Pääkaupunkiseudun kirjastot'   => 'http://www.helmet.fi/search*fin/i?SEARCH=$1',
+       'Tampereen seudun kirjastot'    => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1-1&lang=kaikki&mat_type=kaikki&submit=Hae&engine_tampere=ON'
 ) + $wgBookstoreListEn;
 
 # Current practices (may be changed if not good ones)
@@ -63,8 +71,8 @@ require_once( 'LanguageUtf8.php' );
 /* private */ $wgAllMessagesFi = array(
 
 # User preference toggles
-'tog-underline'       => 'Alleviivaa linkit',
-'tog-highlightbroken' => 'Näytä linkit puuttuville sivuille <a href="" class="new">näin </a> (vaihtoehtoisesti näin: <a href="" class="internal">?</a>).',
+'tog-underline'       => 'Alleviivaa linkit:',
+'tog-highlightbroken' => 'Näytä linkit puuttuville sivuille <a href="" class="new">näin</a> (vaihtoehtoisesti näin: <a href="" class="internal">?</a>).',
 'tog-justify'         => 'Tasaa kappaleet',
 'tog-hideminor'       => 'Piilota pienet muutokset tuoreet muutokset -listasta',
 'tog-usenewrc'        => 'Kehittynyt tuoreet muutokset -listaus (JavaScript)',
@@ -89,11 +97,14 @@ require_once( 'LanguageUtf8.php' );
 'tog-fancysig'        => 'Muotoilematon allekirjoitus ilman automaattista linkkiä',
 'tog-externaleditor'  => 'Käytä ulkoista tekstieditoria oletuksena',
 'tog-externaldiff'    => 'Käytä ulkoista diff-ohjelmaa oletuksena',
+'tog-showjumplinks'   => 'Lisää loikkaa-käytettävyyslinkit sivun alkuun',
 
 'underline-always'    => 'Aina',
 'underline-never'     => 'Ei koskaan',
 'underline-default'   => 'Selaimen oletustapa',
 
+'skinpreview'         => '(Esikatsele...)',
+
 # dates
 'sunday'      => 'sunnuntai',
 'monday'      => 'maanantai',
@@ -114,26 +125,27 @@ require_once( 'LanguageUtf8.php' );
 'october'     => 'lokakuu',
 'november'    => 'marraskuu',
 'december'    => 'joulukuu',
-'jan'         => 'tammi',
-'feb'         => 'helmi',
-'mar'         => 'maalis',
-'apr'         => 'huhti',
-'may'         => 'touko',
-'jun'         => 'kesä',
-'jul'         => 'heinä',
-'aug'         => 'elo',
-'sep'         => 'syys',
-'oct'         => 'loka',
-'nov'         => 'marras',
-'dec'         => 'joulu',
+'jan'         => 'tammikuu',
+'feb'         => 'helmikuu',
+'mar'         => 'maaliskuu',
+'apr'         => 'huhtikuu',
+'may'         => 'toukokuu',
+'jun'         => 'kesäkuu',
+'jul'         => 'heinäkuu',
+'aug'         => 'elokuu',
+'sep'         => 'syyskuu',
+'oct'         => 'lokakuu',
+'nov'         => 'marraskuu',
+'dec'         => 'joulukuu',
 
 # Bits of text used by many pages:
 #
+'categories1'         => 'Luokka',
 'categories'          => 'Luokat',
 'category'            => 'Luokka',
 'category_header'     => 'Sivut, jotka ovat luokassa $1',
 'subcategories'       => 'Alaluokat',
-'linktrail'           => '/^((?:[a-z]|ä|ö)+)(.*)$/sD',
+'linktrail'           => '/^((?:[a-z]|ä|ö)+)(.*)$/sD',
 'mainpage'            => 'Etusivu',
 'mainpagetext'        => 'Mediawiki on onnistuneesti asennettu.',
 'mainpagedocfooter'   => 'Lisätietoja käytöstä ja asetusten tekoa varten on sivuilla [http://meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface] ja [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User\'s Guide].<br />Tarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset LanguageFi.php:n <tt>convertGrammar</tt>-funktioon.<br />{{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) — {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) — {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) — {{GRAMMAR:illative|{{SITENAME}}}} (yöhön).',
@@ -145,7 +157,6 @@ require_once( 'LanguageUtf8.php' );
 'article'             => 'Sivu',
 'help'                => 'Ohje',
 'helppage'            => 'Help:Ohje',
-'wikititlesuffix'     => '{{SITENAME}}',
 'bugreports'          => 'Ongelmat ja parannusehdotukset',
 'bugreportspage'      => 'Project:Ongelmat ja parannusehdotukset',
 'sitesupport'         => 'Lahjoitukset', # Set a URL in $wgSiteSupportPage in LocalSettings.php
@@ -165,8 +176,8 @@ require_once( 'LanguageUtf8.php' );
 'qbmyoptions'         => 'Asetukset',
 'qbspecialpages'      => 'Toimintosivut',
 'moredotdotdot'       => 'Lisää...',
-'mypage'              => 'Oma käyttäjäsivu',
-'mytalk'              => 'Oma keskustelusivu',
+'mypage'              => 'Käyttäjäsivu',
+'mytalk'              => 'Keskustelusivu',
 'anontalk'            => 'Keskustele tämän IP:n kanssa',
 'navigation'          => 'Valikko',
 'currentevents'       => 'Ajankohtaista',
@@ -181,10 +192,13 @@ require_once( 'LanguageUtf8.php' );
 'help'                => 'Ohje',
 'search'              => 'Etsi',
 'go'                  => 'Siirry',
-'history'             => 'Vanhemmat versiot',
+'history'             => 'Historia',
 'history_short'       => 'Historia',
+'updatedmarker'       => 'päivitetty viimeisimmän käyntisi jälkeen',
 'info_short'          => 'Tiedostus',
 'printableversion'    => 'Tulostettava versio',
+'permalink'           => 'Ikilinkki',
+'print'               => 'Tulosta',
 'edit'                => 'Muokkaa',
 'editthispage'        => 'Muokkaa tätä sivua',
 'delete'              => 'Poista',
@@ -204,6 +218,7 @@ require_once( 'LanguageUtf8.php' );
 'articlepage'         => 'Näytä varsinainen sivu',
 'subjectpage'         => 'Näytä aihe', # For compatibility
 'talk'                => 'Keskustelu',
+'views'               => 'Näkymät',
 'toolbox'             => 'Työkalut',
 'userpage'            => 'Näytä käyttäjän sivu',
 'wikipediapage'       => 'Näytä erikoissivu',
@@ -211,13 +226,19 @@ require_once( 'LanguageUtf8.php' );
 'viewtalkpage'        => 'Näytä keskustelusivu',
 'otherlanguages'      => 'Muut kielet',
 'redirectedfrom'      => 'Uudelleenohjattu sivulta $1',
+'redirectpagesub'     => 'Uudelleenohjaussivu',
 'lastmodified'        => 'Sivua on viimeksi muutettu  $1.',
 'viewcount'           => 'Tämä sivu on näytetty $1 kertaa.',
 'copyright'           => 'Sisältö on käytettävissä lisenssillä $1.',
 'poweredby'           => '{{GRAMMAR:genitive|{{SITENAME}}}} tarjoaa [http://www.mediawiki.org/ MediaWiki], avoimen lähdekoodin ohjelmisto.',
 'printsubtitle'       => '(Lähde: {{SERVER}})',
 'protectedpage'       => 'Suojattu sivu',
-'administrators'      => 'Project:Ylläpitäjät',
+'administrators'      => '{{ns:project}}:Ylläpitäjät',
+'jumpto'              => 'Loikkaa:',
+'jumptonavigation'    => 'valikkoon',
+'jumptosearch'        => 'hakuun',
+
+
 'sysoptitle'          => 'Vaatii ylläpitäjäoikeudet',
 'sysoptext'           => 'Tämän toiminnon voi suorittaa vain käyttäjä, jolla on ylläpitäjäoikeudet. Katso $1.',
 'developertitle'      => 'Ohjelmiston kehittäjän oikeuksia vaaditaan',
@@ -230,6 +251,9 @@ require_once( 'LanguageUtf8.php' );
 'versionrequiredtext' => 'Mediawikistä tarvitaan vähintään versio $1 tämän sivun käyttämiseen. Katso [[Special:Version|versio]]',
 
 'nbytes'              => '$1 tavua',
+'ncategories'         => '$1 luokkaa',
+'nrevisions'          => '$1 muutosta',
+'widthheight'         => '$1×$2',
 'go'                  => 'Siirry',
 'ok'                  => 'OK',
 'sitetitle'           => '{{SITENAME}}',
@@ -243,6 +267,8 @@ require_once( 'LanguageUtf8.php' );
 'showtoc'             => 'näytä',
 'hidetoc'             => 'piilota',
 'thisisdeleted'       => 'Näytä tai palauta $1.',
+'viewdeleted'         => 'Näytä $1?',
+'restorelink1'        => 'yksi poistettu muokkaus.',
 'restorelink'         => '$1 poistettua muokkausta',
 'feedlinks'           => 'Uutissyötteet:',
 'sitenotice'          => '', # the equivalent to wgSiteNotice
@@ -279,7 +305,7 @@ require_once( 'LanguageUtf8.php' );
 'readonly'            => 'Tietokanta on lukittu',
 'enterlockreason'     => 'Anna lukituksen syy sekä sen arvioitu poistamisaika',
 'readonlytext'        => '{{GRAMMAR:genitive|{{SITENAME}}}} tietokanta on tällä hetkellä lukittu. Uusia sivuja ei voi luoda eikä muitakaan muutoksia tehdä. Syynä ovat todennäköisimmin rutiininomaiset tietokannan ylläpitotoimet. Tietokannan lukinneen ylläpitäjän selitys: <p>$1',
-'missingarticle'      => 'Tietokannasta ei löytynyt sivua <b>$1</b>. Koita hetken päästä uudelleen. Jos ongelma ei katoa, ota yhteyttä ylläpitäjään ja anna mukaan tämän sivun URL-osoite.',
+'missingarticle'      => 'Tietokannasta ei löytynyt sivua \'\'\'$1\'\'\'. Sivu on saatettu poistaa, tai palvelin ei ole ehtinyt vielä käsitellä sitä. Jälkimmäisessä tapauksessa koita hetken päästä uudelleen. Jos ongelma ei katoa, ota yhteyttä ylläpitäjään ja anna mukaan tämän sivun URL-osoite.',
 'readonly_lag'        => 'Tietokanta on automaattisesti lukittu, jotta kaikki tietokantapalvelimet saisivat kaikki tuoreet muutokset',
 'internalerror'       => 'Sisäinen virhe',
 'filecopyerror'       => 'Tiedostoa <b>$1</b> ei voitu kopioida tiedostoksi <b>$2</b>.',
@@ -307,7 +333,7 @@ Sivun lähdekoodi:',
 #
 'logouttitle'         => 'Uloskirjautuminen',
 'logouttext'          => 'Olet nyt kirjautunut ulos {{GRAMMAR:elative|{{SITENAME}}}}. Voit jatkaa {{GRAMMAR:genitive|{{SITENAME}}}} käyttöä nimettömänä, tai kirjautua uudelleen sisään.',
-'welcomecreation'     => '== Tervetuloa, $1! == <p>Käyttäjätunnuksesi on luotu. Älä unohda virittää [[Special:Preferences|{{GRAMMAR:genitive|{{SITENAME}}]] asetuksiasi]].</p>',
+'welcomecreation'     => '== Tervetuloa, $1! == <p>Käyttäjätunnuksesi on luotu. Älä unohda virittää [[{{ns:special}}:Preferences|{{GRAMMAR:genitive|{{SITENAME}}]] asetuksiasi]].</p>',
 'loginpagetitle'      => 'Sisäänkirjautuminen',
 'yourname'            => 'Käyttäjätunnus',
 'yourpassword'        => 'Salasana',
@@ -317,7 +343,7 @@ Sivun lähdekoodi:',
 'yourdomainname'      => 'Verkkonimi',
 'externaldberror'     => 'Tapahtui virhe ulkoisen autentikointitietokannan käytössä tai sinulla ei ole lupaa päivittää tunnustasi.',
 'loginproblem'        => '<b>Sisäänkirjautuminen ei onnistunut.</b><br />Yritä uudelleen!',
-'alreadyloggedin'     => '<font color=red><b>Käyttäjä $1, olet jo kirjautunut sisään!</b></font><br />\n',
+'alreadyloggedin'     => '<strong>Käyttäjä $1, olet jo kirjautunut sisään!</strong><br />\n',
 'login'               => 'Kirjaudu sisään',
 'loginprompt'         => '<!-- -->',
 'userlogin'           => 'Kirjaudu sisään tai luo tunnus',
@@ -328,17 +354,19 @@ Sivun lähdekoodi:',
 'createaccountmail'   => 'sähköpostitse',
 'badretype'           => 'Syöttämäsi salasanat ovat erilaiset.',
 'userexists'          => 'Pyytämäsi käyttäjänimi on jo käytössä. Ole hyvä ja valitse toinen käyttäjänimi.',
-'youremail'           => 'Sähköpostiosoite²',
-'yourrealname'        => 'Nimi¹',
-'yourlanguage'        => 'Käyttöliittymän kieli',
+'youremail'           => 'Sähköpostiosoite:',
+'username'            => 'Tunnus: ',
+'uid'                 => 'Numero: ',
+'yourrealname'        => 'Nimi:',
+'yourlanguage'        => 'Käyttöliittymän kieli:',
 'yourvariant'         => 'Kielivariantti', // TODO: CHECK ME (language varian)
-'yournick'            => 'Nimimerkki allekirjoituksia varten',
+'yournick'            => 'Nimimerkki allekirjoituksia varten:',
 'email'               => 'Sähköpostitoiminnot',
 'emailforlost'        => '&nbsp;',
 'prefs-help-email-enotif' => 'Tätä osoitetta käytetään myös artikkelien muuttumisilmoituksiin, jos ominaisuus on käytössä.',
-'prefs-help-realname' => '¹ Nimi (vapaaehtoinen): Nimeäsi käytetään antaamaan kunnia työllesi.',
+'prefs-help-realname' => 'Nimi (vapaaehtoinen): Nimeäsi käytetään antaamaan kunnia työllesi.',
 'loginerror'          => 'Sisäänkirjautumisvirhe',
-'prefs-help-email'    => '² Sähköpostiosoite (vapaaehtoinen): Muut käyttäjät voivat ottaa sinuun yhteyttä sähköpostilla ilman, että osoitteesi paljastuu.',
+'prefs-help-email'    => 'Sähköpostiosoite (vapaaehtoinen): Muut käyttäjät voivat ottaa sinuun yhteyttä sähköpostilla ilman, että osoitteesi paljastuu.',
 
 'nocookiesnew'        => 'Käyttäjä luotiin, mutta et ole kirjautunut sisään. {{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeistä. Kytke ne päälle, ja sitten kirjaudu sisään juuri luomallasi käyttäjänimellä ja salasanalla.',
 'nocookieslogin'      => '{{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeitä. Ota ne käyttöön, ja yritä uudelleen.',
@@ -420,7 +448,8 @@ Sivun lähdekoodi:',
 'whitelistacctitle'   => 'Sinun ei ole sallittu luoda tunnusta',
 'whitelistacctext'    => 'Saadaksesi oikeudet luoda tunnus sinun täytyy kirjautua [[Special:Userlogin|sisään]] ja sinulla tulee olla asiaankuuluvat oikeudet.',
 'loginreqtitle'       => 'Sisäänkirjautuminen vaaditaan',
-'loginreqtext'        => 'Sinun täytyy [[Special:Userlogin|kirjautua sisään]], jotta voisit nähdä muut sivut.',
+'loginreqlink'        => 'kirjautua sisään',
+'loginreqpagetext'    => 'Sinun täytyy $1, jotta voisit nähdä muut sivut.',
 
 'accmailtitle'        => 'Salasana lähetetty.',
 'accmailtext'         => 'käyttäjän \'\'\'$1\'\'\' salasana on lähetetty osoitteeseen \'\'\'$2\'\'\'.',
@@ -431,13 +460,13 @@ Sivun lähdekoodi:',
 'noarticletext'       => '<big>\'\'\'{{GRAMMAR:inessive|{{SITENAME}}}} ei ole tämän nimistä sivua.\'\'\'</big>
 * Voit kirjoittaa uuden sivun \'\'\'<span class="plainlinks">[{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} {{PAGENAME}}]</span>.\'\'\'
 * Jos olet luonut sivun tällä nimellä, se on saatettu poistaa — katso [[Special:Log/delete|poistoloki]].',
-'clearyourcache'      => '\'\'\'Huomautus:\'\'\' Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan: \'\'\'Mozilla, Konqueror ja Safari:\'\'\' napsauta shift-näppäin pohjassa päivitä tai  paina \'\'shift-ctrl-r\'\', \'\'\'IE:\'\'\' \'\'ctrl-f5\'\' tai  \'\'\'Opera:\'\'\' \'\'F5\'\'.',
+'clearyourcache'      => '\'\'\'Huomautus:\'\'\' Selaimen välimuisti pitää ehkä tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan: \'\'\'Mozilla, Firefox ja Safari:\'\'\' napsauta shift-näppäin pohjassa päivitä tai  paina \'\'shift-ctrl-r\'\' / \'\'shift-cmd-r\'\', \'\'\'IE:\'\'\' \'\'ctrl-f5\'\' tai \'\'\'Konqueror:\'\'\' \'\'F5\'\'.',
 'usercssjsyoucanpreview' => '\'\'\'Vinkki:\'\'\' Käytä esikatselupainiketta testataksesi uutta CSS:ää tai JavaScriptiä ennen tallennusta.',
 'usercsspreview'      => '\'\'\'Tämä on vasta CSS:n testaus ja esikatselu.\'\'\'',
 'userjspreview'       => '\'\'\'Tämä on vasta JavaScriptin testaus ja esikatselu.\'\'\'',
 'updated'             => '(Päivitetty)',
 'note'                => 'Huomautus: ', // TODO: NO WIKI MARKUP
-'previewnote'         => 'Tämä on vasta sivun esikatselu. Sivua ei ole vielä tallennettu!',
+'previewnote'         => '<strong>Tämä on vasta sivun esikatselu. Sivua ei ole vielä tallennettu!</strong>',
 'previewconflict'     => 'Tämä esikatselu näyttää miltä muokkausalueella oleva teksti näyttää tallennettuna.',
 'editing'             => 'Muokataan sivua $1',
 'editingsection'      => 'Muokataan osiota sivusta $1',
@@ -449,7 +478,7 @@ Sivun lähdekoodi:',
 'nonunicodebrowser'   => '\'\'\'Varoitus: Selaimesi ei ole Unicode-yhteensopiva. Ole hyvä ja vaihda selainta, ennen kuin muokkaat sivua.\'\'\'',
 'editingold'          => '<center><strong>Varoitus</strong>: Olet muokkaamassa vanhaa versiota tämän sivun tekstistä. Jos tallennat sen, kaikki tämän version jälkeen tehdyt muutokset katoavat.</center>',
 'yourdiff'            => 'Eroavaisuudet',
-'copyrightwarning'    => '<strong>Muutoksesi astuvat voimaan välittömästi.</strong> Jos haluat harjoitella muokkaamista, ole hyvä ja käytä [[Project:Hiekkalaatikko|hiekkalaatikkoa]].<br/><br/>Kaikki {{GRAMMAR:illative|{{SITENAME}}}} tehtävät tuotokset katsotaan julkaistuksi GNU Free Documentation -lisenssin mukaisesti ([[Project:{{SITENAME}} ja tekijänoikeudet|lisätietoja]]). Jos et halua, että kirjoitustasi muokataan armottomasti ja uudelleenkäytetään vapaasti, älä tallenna kirjoitustasi. Tallentamalla muutoksesi lupaat, että kirjoitit tekstisi itse, tai kopioit sen jostain vapaasta lähteestä. <strong>ÄLÄ KÄYTÄ TEKIJÄNOIKEUDEN ALAISTA MATERIAALIA ILMAN LUPAA!</strong>',
+'copyrightwarning'    => '<strong>Muutoksesi astuvat voimaan välittömästi.</strong> Jos haluat harjoitella muokkaamista, ole hyvä ja käytä [[Project:Hiekkalaatikko|hiekkalaatikkoa]].<br /><br />Kaikki {{GRAMMAR:illative|{{SITENAME}}}} tehtävät tuotokset katsotaan julkaistuksi GNU Free Documentation -lisenssin mukaisesti ([[Project:{{SITENAME}} ja tekijänoikeudet|lisätietoja]]). Jos et halua, että kirjoitustasi muokataan armottomasti ja uudelleenkäytetään vapaasti, älä tallenna kirjoitustasi. Tallentamalla muutoksesi lupaat, että kirjoitit tekstisi itse, tai kopioit sen jostain vapaasta lähteestä. <strong>ÄLÄ KÄYTÄ TEKIJÄNOIKEUDEN ALAISTA MATERIAALIA ILMAN LUPAA!</strong>',
 'copyrightwarning2'   => '<br />Huomaa, että kuka tahansa voi muokata, muuttaa ja poistaa kaikkia sivustolle tekemiäsi lisäyksiä ja muutoksia. Muokkaamalla sivustoa luovutat sivuston käyttäjille tämän oikeuden ja takaat, että lisäämäsi aineisto on joko itse kirjoittamaasi tai peräisin jostain vapaasta lähteestä. <strong>TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!</strong>',
 'longpagewarning'     => '<center>Tämän sivun tekstiosuus on $1 binäärikilotavua pitkä. Harkitse, voisiko sivun jakaa pienempiin osiin.</center>',
 'readonlywarning'     => '<strong>Varoitus</strong>: Tietokanta on lukittu huoltoa varten, joten voi olla ettet pysty tallentamaan muokkauksiasi juuri nyt. Saattaa olla paras leikata ja liimata tekstisi omaan tekstitiedostoosi ja tallentaa se tänne myöhemmin.',
@@ -468,12 +497,12 @@ Sivun lähdekoodi:',
 'revisionasofwithlink'=> 'Versio, joka luotiin $1.<br />$3 | $2 | $4',
 'previousrevision'    => '← Vanhempi versio',
 'nextrevision'        => 'Uudempi versio →',
-'currentrevisionlink' => 'Näytä nykyinen versio',
+'currentrevisionlink' => 'Nykyinen versio',
 'cur'                 => 'nyk.',
 'next'                => 'seur.',
 'last'                => 'edell.',
 'orig'                => 'alkup.',
-'histlegend'          => 'Merkinnät: (nyk.) = eroavaisuudet nykyiseen versioon, (edell.) = eroavaisuudet edelliseen versioon, <b>p</b> = pieni muutos', // TODO NO WIKIMARKUP
+'histlegend'          => 'Merkinnät: (nyk.) = eroavaisuudet nykyiseen versioon, (edell.) = eroavaisuudet edelliseen versioon, <span class="minor">p</span> = pieni muutos', // TODO NO WIKIMARKUP
 'history_copyright'   => '-',
 'histfirst'           => 'Ensimmäiset',
 'histlast'            => 'Viimeisimmät',
@@ -507,13 +536,14 @@ Sivun lähdekoodi:',
 'notextmatches'       => 'Hakusanaa ei löytynyt sivujen teksteistä',
 'prevn'               => '← $1 edellistä',
 'nextn'               => '$1 seuraavaa →',
-'viewprevnext'        => 'Näytä [$3] kerralla.<br />$1 | $2',
+'viewprevnext'        => "Näytä [$3] kerralla.\n\n$1 | $2",
 'showingresults'      => '<b>$1</b> tulosta tuloksesta <b>$2</b> alkaen.',
 'showingresultsnum'   => 'Alla on <b>$3</b> hakutulosta alkaen <b>$2.</b> tuloksesta.',
 'nonefound'           => '\'\'\'Huomautus\'\'\': Epäonnistuneet haut johtuvat usein hyvin yleisten sanojen, kuten \'\'on\'\' ja \'\'ei\'\', etsimisestä tai useamman kuin yhden hakutermin määrittelemisestä. Vain sivut, joilla on kaikki hakutermin sanat, näkyvät tuloksissa.',
 'powersearch'         => 'Etsi',
-'powersearchtext'     => 'Haku nimiavaruuksista:<br />$1<br /><b>Etsi</b> $3 $9 $2 Luettele uudelleenohjaukset', # TODO NOWIKIMARKUP
+'powersearchtext'     => 'Hae nimiavaruuksista:<br />$1<br /><b>Etsi</b> $3 $9 $2 Luettele uudelleenohjaukset', # TODO NOWIKIMARKUP
 'searchdisabled'      => '<p style="margin: 1.5em 2em 1em">Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön.<small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small></p>', # TODO NOWIKIMARKUP
+
 'blanknamespace'      => '(sivut)',
 
 # Preferences page
@@ -522,12 +552,13 @@ Sivun lähdekoodi:',
 'prefsnologin'        => 'Et ole kirjautunut sisään',
 'prefsnologintext'    => 'Sinun täytyy [[Special:Userlogin|kirjautua sisään]], jotta voisit muuttaa asetuksia.',
 'prefslogintext'      => 'Olet kirjautunut sisään käyttäjänä \'\'\'$1\'\'\'. Sisäinen tunnistenumerosi on \'\'\'$2\'\'\'.',
-'prefsreset'          => 'Asetukset on palautettu talletettujen mukaisiksi.',
+'prefsreset'          => 'Asetukset on palautettu tallennetuista asetuksistasi.',
 'qbsettings'          => 'Pikavalikko',
 'changepassword'      => 'Vaihda salasanaa',
 'skin'                => 'Ulkonäkö',
 'math'                => 'Matematiikka',
 'dateformat'          => 'Päiväyksen muoto',
+'datetime'            => 'Aika ja päiväys',
 'math_failure'        => 'Jäsentäminen epäonnistui',
 'math_unknown_error'  => 'Tuntematon virhe',
 'math_unknown_function' => 'Tuntematon funktio',
@@ -541,27 +572,27 @@ Sivun lähdekoodi:',
 'prefs-rc'            => 'Tuoreet muutokset ja tyngät',
 'prefs-misc'          => 'Muut asetukset',
 'saveprefs'           => 'Tallenna asetukset',
-'resetprefs'          => 'Palauta alkuperäiset asetukset',
-'oldpassword'         => 'Vanha salasana',
-'newpassword'         => 'Uusi salasana',
-'retypenew'           => 'Uusi salasana uudelleen',
+'resetprefs'          => 'Palauta tallennetut asetukset',
+'oldpassword'         => 'Vanha salasana:',
+'newpassword'         => 'Uusi salasana:',
+'retypenew'           => 'Uusi salasana uudelleen:',
 'textboxsize'         => 'Muokkaaminen',
-'rows'                => 'Rivit',
-'columns'             => 'Sarakkeet',
+'rows'                => 'Rivit:',
+'columns'             => 'Sarakkeet:',
 'searchresultshead'   => 'Haku',
-'resultsperpage'      => 'Tuloksia sivua kohti',
-'contextlines'        => 'Rivien määrä tulosta kohti',
-'contextchars'        => 'Sisällön merkkien määrä riviä kohden',
-'stubthreshold'       => 'Tynkäsivun osoituskynnys',
-'recentchangescount'  => 'Otsikoiden määrä viimeisimmissä muutoksissa',
-'savedprefs'          => 'Asetuksesi tallennettiin.',
+'resultsperpage'      => 'Tuloksia sivua kohti:',
+'contextlines'        => 'Rivien määrä tulosta kohti:',
+'contextchars'        => 'Sisällön merkkien määrä riviä kohden:',
+'stubthreshold'       => 'Tynkäsivun osoituskynnys:',
+'recentchangescount'  => 'Sivujen määrä tuoreissa muutoksissa:',
+'savedprefs'          => 'Asetuksesi tallennettiin onnistuneesti.',
 'timezonelegend'      => 'Aikavyöhyke',
 'timezonetext'        => 'Paikallisen ajan ja palvelimen ajan (UTC) välinen aikaero tunteina.',
 'localtime'           => 'Paikallinen aika',
 'timezoneoffset'      => 'Aikaero',
 'servertime'          => 'Palvelimen aika',
 'guesstimezone'       => 'Utele selaimelta',
-'emailflag'           => 'Estä sähköpostin lähetys osoitteeseen',
+'allowemail'          => 'Salli sähköpostin lähetys osoitteeseen',
 'defaultns'           => 'Etsi oletusarvoisesti näistä nimiavaruuksista:',
 'default'             => 'oletus',
 'files'               => 'Tiedostot',
@@ -570,10 +601,10 @@ Sivun lähdekoodi:',
 #
 
 # switching pan
-'groups-lookup-group' => 'Manage group rights',
+/*'groups-lookup-group' => 'Manage group rights',
 'groups-group-edit' => 'Existing groups: ',
 'editgroup' => 'Edit Group',
-'addgroup' => 'Add Group',
+'addgroup' => 'Add Group',*/
 
 'userrights-lookup-user'   => 'Käyttöoikeuksien hallinta',
 'userrights-user-editname' => 'Käyttäjätunnus: ',
@@ -581,24 +612,21 @@ Sivun lähdekoodi:',
 
 # user groups editing
 #
-'userrights-editusergroup' => 'Käyttäjän ryhmät',
-'saveusergroups' => 'Tallenna',
-'userrights-groupsmember' => 'Jäsenenä ryhmissä:',
+'userrights-editusergroup'   => 'Käyttäjän ryhmät',
+'saveusergroups'             => 'Tallenna',
+'userrights-groupsmember'    => 'Jäsenenä ryhmissä:',
 'userrights-groupsavailable' => 'Saatavilla olevat ryhmät:',
-'userrights-groupshelp' => 'Valitse ryhmät, jotka haluat poistaa tai lisätä. Valitsemattomia ryhmiä ei muuteta. Voit poistaa valinnan pitämällä Ctrl-näppäintä pohjassa napsautuksen aikana.',
+'userrights-groupshelp'      => 'Valitse ryhmät, jotka haluat poistaa tai lisätä. Valitsemattomia ryhmiä ei muuteta. Voit poistaa valinnan pitämällä Ctrl-näppäintä pohjassa napsautuksen aikana.',
+'userrights-logcomment'      => 'Ryhmäoikeuden muutos ryhmistä ”$1” ryhmiin ”$2”',
 
 # Default group names and descriptions
-# 
-'group-anon-name'       => 'Anonyymi',
-'group-anon-desc'       => 'Käyttäjät, joilla ei ole tunnusta tai jotka eivät ole kirjautuneet sisään',
-'group-loggedin-name'   => 'Käyttäjä',
-'group-loggedin-desc'   => 'Käyttäjät, jotka ovat kirjautuneet sisään',
-'group-admin-name'      => 'Ylläpitäjä',
-'group-admin-desc'      => 'Luotetut käyttäjät voivat estää käyttäjiä ja poistaa ja suojata artikkeleita',
-'group-bureaucrat-name' => 'Byrokraatti',
+#
+'group-sysop-name'      => 'Ylläpitäjät',
+'group-sysop-desc'      => 'Luotetut käyttäjät voivat estää käyttäjiä ja poistaa ja suojata artikkeleita',
+'group-bureaucrat-name' => 'Byrokraatit',
 'group-bureaucrat-desc' => 'Byrokraatit voivat tehdä ylläpitäjiä',
-'group-steward-name'    => 'Ylivalvoja',
-'group-steward-desc'    => 'Ylivalvojilla on kaikki oikeudet',
+'group-bot-name'        => 'Botit',
+'group-bot-desc'        => '',
 
 # Recent changes
 #
@@ -633,7 +661,7 @@ Sivun lähdekoodi:',
 'uploadlink'          => 'Tallenna kuvia',
 'reupload'            => 'Uusi tallennus',
 'reuploaddesc'        => 'Paluu tallennuslomakkeelle.',
-'uploadnologin'       => 'Et ole kirjaunut sisään',
+'uploadnologin'       => 'Et ole kirjautunut sisään',
 'uploadnologintext'   => 'Sinun pitää olla [[Special:Userlogin|kirjautuneena sisään]], jotta voisit tallentaa tiedostoja.',
 'upload_directory_read_only' => 'Palvelimella ei ole kirjoitusoikeuksia tallennushakemistoon "$1".',
 'uploaderror'         => 'Tallennusvirhe',
@@ -652,31 +680,38 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'uploadlogpagetext'   => 'Alla on luettelo uusimmista tallennuksista. Kaikki ajat näytetään palvelimen aikavyöhykkeessä (UTC).',
 'filename'            => 'Tiedoston nimi',
 'filedesc'            => 'Yhteenveto',
+'fileuploadsummary'   => 'Yhteenveto:',
 'filestatus'          => 'Tiedoston tekijänoikeudet',
 'filesource'          => 'Lähde',
 'copyrightpage'       => 'Project:Tekijänoikeudet',
 'copyrightpagename'   => '{{SITENAME}} ja tekijänoikeudet',
 'uploadedfiles'       => 'Tallennetut tiedostot',
-'ignorewarning'       => 'Jätä tämä varoitus huomiotta, ja tallenna tiedosto.',
+'ignorewarnings'      => 'Ohita kaikki varoitukset',
 'minlength'           => 'Tiedoston nimessä pitää olla vähintään kolme merkkiä.',
 'illegalfilename'     => 'Tiedoston nimessä \'\'\'$1\'\'\' on merkkejä, joita ei sallita sivujen nimissä. Vaihda tiedoston nimeä, ja yritä tallentamista uudelleen.',
 'badfilename'         => 'Tiedoston nimi vaihdettiin: $1.',
 'badfiletype'         => '".$1" ei ole suositeltava tiedostomuoto.',
-'largefile'           => 'Tiedostojen ei tulisi olla yli 100 kilotavun kokoisia.',
-'emptyfile'           => 'Tiedosto, jota yritit tallentaa näyttäisi olevan tyhjä. Tarkista, että kirjoitit polun ja nimen oikein.',
-'fileexists'          => 'Tämän niminen tiedosto on jo olemassa. Tarkista $1, ellet ole varma, että haluat muuttaa sitä.',
+'largefile'           => 'Tiedostojen ei tulisi olla yli $1 kilotavun kokoisia. Tiedoston, jonka yritit tallentaa, koko on $2.',
+'largefileserver'     => 'Tämä tiedosto on suurempi kuin mitä palvelin sallii.',
+'emptyfile'           => 'Tiedosto, jonka yritit tallentaa näyttää olevan tyhjä. Tarkista, että kirjoitit polun ja nimen oikein ja että se ei ole liian suuri kohdepalvelimelle.',
+'fileexists'          => 'Samanniminen tiedosto on jo olemassa. Katso tiedoston sivu $1, jos et ole varma, haluatko muuttaa sitä.',
+'fileexists-forbidden'=> 'Samanniminen tiedosto on jo olemassa. Tallenna tiedosto jollakin toisella nimellä. Nykyinen tiedosto: [[{ns:image}:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Samanniminen tiedosto on jo olemassa jaetussa mediavarastossa. Tallenna tiedosto jollakin toisella nimellä. Nykyinen tiedosto: [[{ns:image}}:$1|thumb|center|$1]]',
 'successfulupload'    => 'Tallennus onnistui',
 'fileuploaded'        => 'Tiedosto \'\'\'$1\'\'\' on tallennettu onnistuneesti. Seuraa linkkiä ($2) kuvaussivulle, ja täytä tiedostoon liityvät tiedot, kuten mistä se on peräisin, milloin se on luotu, kuka sen loi ja mahdollisesti muita tietämiäsi tietoja. Jos tiedosto on kuva, voit lisätä sen sivulle näin: \'\'\'<nowiki>[[Kuva:$1|thumb|Kuvaus]]</nowiki>\'\'\'',
 'uploadwarning'       => 'Tallennusvaroitus',
 'savefile'            => 'Tallenna',
 'uploadedimage'       => 'tallensi tiedoston [[$1]]',
-'uploaddisabled'      => 'Tiedostojen lähettäminen on poissa käytöstä.',
+'uploaddisabled'      => 'Tiedostojen tallentaminen ei ole käytöstä.',
 'uploadscripted'      => 'Tämä tiedosto sisältää HTML-koodia tai skriptejä, jotka selain saattaa virheellisesti suorittaa.',
 'uploadcorrupt'       => 'Tiedosto on vioittunut tai sillä on väärä tiedostopääte. Tarkista tiedosto ja lähetä se uudelleen.',
 'uploadvirus'         => 'Tiedosto sisältää viruksen. Tarkemmat tiedot: $1',
 'sourcefilename'      => 'Lähdenimi',
 'destfilename'        => 'Kohdenimi',
 
+'license'             => 'Lisenssi',
+'nolicense'           => 'Ei lisenssiä',
+
 # Image list
 #
 'imagelist'           => 'Tiedostoluettelo',
@@ -699,10 +734,23 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'linkstoimage'        => 'Seuraavilta sivuilta on linkki tähän tiedostoon:',
 'nolinkstoimage'      => 'Tähän tiedostoon ei ole linkkejä miltään sivulta.',
 'sharedupload'        => 'Tämä tiedosto on jaettu ja muut projektit saattavat käyttää sitä.',
-'shareduploadwiki'    => 'Katso [$1 kuvaussivulta] lisätietoja.',
-'noimage'             => 'Tämän nimistä tiedostoa ei ole olemassa. Voit [$1 tallentaa tiedoston] {{GRAMMAR:genitive|{{SITENAME}}}}',
+'shareduploadwiki'    => 'Katso $1 lisätietoja.',
+'shareduploadwiki-linktext' => 'kuvaussivulta',
+'noimage'             => 'Tämän nimistä tiedostoa ei ole olemassa. Voit $1 {{GRAMMAR:genitive|{{SITENAME}}}}',
+'noimage-linktext'    => 'tallentaa tiedoston',
 'uploadnewversion'    => '[$1 Tallenna] uusi versio tästä tiedostosta',
 
+# Mime search
+#
+'mimesearch'          => 'MIME-haku',
+'mimetype'            => 'MIME-tyyppi: ',
+'download'            => 'lataa',
+
+# Unwatchedpages
+#
+'unwatchedpages'      => 'Tarkkailemattomat sivut',
+
+
 # Statistics
 #
 'statistics'          => 'Tilastoja',
@@ -722,6 +770,7 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'disambiguationstext' => 'Seuraavat artikkelit linkittävät <i>tarkennussivuun</i>. Sen sijasta niiden pitäisi linkittää asianomaiseen aiheeseen.<br />Sivua kohdellaan tarkennussivuna jos siihen on linkki sivulta $1.<br />Linkkejä muihin nimiavaruuksiin <i>ei</i> ole listattu tässä.',
 'doubleredirects'     => 'Kaksinkertaiset uudelleenohjaukset',
 'doubleredirectstext' => '<b>Huomio:</b> Tässä listassa saattaa olla virheitä. Yleensä kyseessä on sivu, jossa ensimmäisen #REDIRECTin jälkeen on tekstiä.<br />\nJokaisella rivillä on linkit ensimmäiseen ja toiseen uudelleenohjaukseen sekä toisen uudelleenohjauksen kohteen ensimmäiseen riviin, eli yleensä \'oikeaan\' kohteeseen, johon ensimmäisen uudelleenohjauksen pitäisi osoittaa.',
+'doubleredirectsarrow'=> '→',
 'brokenredirects'     => 'Virheelliset uudelleenohjaukset',
 'brokenredirectstext' => 'Seuraavat uudelleenohjaukset on linkitetty artikkeleihin, joita ei ole olemassa.',
 'selflinks'           => 'Sivut, jotka linkittävät itseensä',
@@ -736,7 +785,6 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 # Miscellaneous special pages
 #
 'orphans'             => 'Orposivut',
-'geo'                 => 'GEO-koordinaatit',
 'validate'            => 'Kelpuuta sivu',
 'lonelypages'         => 'Yksinäiset sivut',
 'uncategorizedpages'  => 'Luokittelemattomat sivut',
@@ -745,13 +793,20 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'unusedimages'        => 'Käyttämättömät tiedostot',
 'popularpages'        => 'Suositut sivut',
 'nviews'              => '$1 latausta',
+'wantedcategories'    => 'Halutut luokat',
 'wantedpages'         => 'Halutut sivut',
+'mostlinked'          => 'Sivut, joihin on eniten linkkejä',
+'mostlinkedcategories'=> 'Luokat, joihin on eniten linkkejä',
+'mostcategories'      => 'Sivut, jotka ovat useissa luokissa',
+'mostimages'          => 'Kuvat, joihin on eniten linkkejä',
+'mostrevisions'       => 'Sivut, joilla on eniten muutoksia',
 'nlinks'              => '$1 linkkiä',
 'allpages'            => 'Kaikki sivut',
+'prefixindex'         => 'Etuliiteluettelo',
 'randompage'          => 'Satunnainen sivu',
 'shortpages'          => 'Lyhyet sivut',
 'longpages'           => 'Pitkät sivut',
-'deadendpages'        => 'Sivut, joilta ei linkkejä',
+'deadendpages'        => 'Sivut, joilla ei ole linkkejä',
 'listusers'           => 'Käyttäjälista',
 'specialpages'        => 'Toimintosivut',
 'spheading'           => 'Toimintosivut',
@@ -777,7 +832,7 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 
 # No reason to overwrite
 //  'rfcurl'              => 'http://www.faqs.org/rfcs/rfc$1.html',
-'alphaindexline'      => 'Alkaen sivusta $1 päättyen sivuun $2',
+'alphaindexline'      => '$1 → $2',
 'version'             => 'Versio',
 'log'                 => 'Lokit',
 'alllogstext'         => 'Yhdistetty tallennus-, poisto-, suojaus-, esto- ja ylläpitolokien näyttö. Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muutos on kohdistunut.',
@@ -792,6 +847,7 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'allpagesprev'        => 'Edellinen',
 'allpagesnext'        => 'Seuraava',
 'allpagessubmit'      => 'Vaihda',
+'allpagesprefix'      => 'Näytä sivut, jotka alkavat merkkijonolla ',
 
 # Email this user
 #
@@ -801,7 +857,7 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'emailpage'           => 'Lähetä sähköpostia käyttäjälle',
 'emailpagetext'       => 'Jos tämä käyttäjä on antanut asetuksissaan kelvollisen sähköpostiosoitteen, alla olevalla lomakeella voi lähettää yhden viestin hänelle. Omissa asetuksissasi annettu sähköpostiosoite näkyy sähköpostin lähettäjän osoitteena, jotta vastaanottaja voi vastata viestiin.',
 'usermailererror'     => 'Postitus palautti virheen: ',
-'defemailsubject'     => '{{SITENAME}} e-mail',
+'defemailsubject'     => '{{SITENAME}}-sähköposti',
 'noemailtitle'        => 'Ei sähköpostiosoitetta',
 'noemailtext'         => 'Tämä käyttäjä ei ole määritellyt kelpoa sähköpostiosoitetta tai ei halua postia muilta käyttäjiltä.',
 'emailfrom'           => 'Lähettäjä',
@@ -820,7 +876,7 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'watchnologin'        => 'Et ole kirjautunut sisään',
 'watchnologintext'    => 'Sinun pitää kirjautua sisään, jotta voisit käyttää tarkkailulistaa.',
 'addedwatch'          => 'Lisätty tarkkailulistalle',
-'addedwatchtext'      => 'Sivu \'\'\'$1\'\'\' on lisätty [[Special:Watchlist|tarkkailulistallesi]]. Tulevaisuudessa sivuun ja sen keskustelusivuun tehtävät muutokset listataan täällä. Sivu on \'\'\'lihavoitu\'\'\' [[Special:Recentchanges|tuoreiden muutosten listassa]], jotta huomaisit sen helpommin. Jos haluat myöhemmin poistaa sivun tarkkailulistaltasi, napsauta linkkiä \'\'lopeta tarkkailu\'\' sivun reunassa.',
+'addedwatchtext'      => 'Sivu \'\'\'$1\'\'\' on lisätty [[{{ns:pecial}}:Watchlist|tarkkailulistallesi]]. Tulevaisuudessa sivuun ja sen keskustelusivuun tehtävät muutokset listataan täällä. Sivu on \'\'\'lihavoitu\'\'\' [[{{ns:pecial}}:Recentchanges|tuoreiden muutosten listassa]], jotta huomaisit sen helpommin. Jos haluat myöhemmin poistaa sivun tarkkailulistaltasi, napsauta linkkiä \'\'lopeta tarkkailu\'\' sivun reunassa.',
 'removedwatch'        => 'Poistettu tarkkailulistalta',
 'removedwatchtext'    => 'Sivu \'\'\'$1\'\'\' on poistettu tarkkailulistaltasi.',
 'watch'               => 'Tarkkaile',
@@ -828,7 +884,7 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'unwatch'             => 'Lopeta tarkkailu',
 'unwatchthispage'     => 'Lopeta tarkkailu',
 'notanarticle'        => 'Ei ole sivu',
-'watchnochange'       => 'Valittuna ajanjaksona yhtäkään tarkkailemistasi sivuista ei muokattu. ',
+'watchnochange'       => 'Valittuna ajanjaksona yhtäkään tarkkailemistasi sivuista ei muokattu.',
 'watchdetails'        => 'Keskustelusivuja mukaan laskematta tarkkailun alla on $1 sivua, joista $2 on muokattu määritellyllä aikavälillä. <span class="plainlinks"> [$4 Muokkaa listaa]</span>.',
 'wlheader-enotif'     => '* Sähköposti-ilmoitukset ovat käytössä.',
 'wlheader-showupdated'=> '* Sivut, joita on muokattu viimeisen käyntisi jälkeen on merkitty \'\'\'paksummalla\'\'\'',
@@ -841,9 +897,10 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'couldntremove'       => 'Sivua $1 ei voitu poistaa tarkkailulistalta',
 'iteminvalidname'     => 'Sivun $1 kanssa oli ongelmia! Sivun nimessä on vikaa.',
 'wlnote'              => 'Alla on <b>$1</b> muutosta viimeisen <b>$2</b> tunnin ajalta.', // TODO NOWIKIMARKUP
-'wlshowlast'          => 'Näytä viimeiset $1 tuntia $2 päivää$3',
+'wlshowlast'          => 'Näytä viimeiset $1 tuntia tai $2 päivää$3',
 'wlsaved'             => 'Tämä on tallennettu versio tarkkailulistastasi.',
 'wlhideshowown'       => '$1 omat muokkaukset.',
+'wlhideshowbots'      => '$1 bottien muokkaukset.',
 'wlshow'              => 'Näytä',
 'wlhide'              => 'Piilota',
 
@@ -889,9 +946,9 @@ Palaute ja lisäapu osoitteessa:
 'confirmdelete'       => 'Vahvista poisto',
 'deletesub'           => 'Sivun $1 poisto',
 'historywarning'      => 'Varoitus: Sivulla, jonka aiot poistaa on muokkaushistoria: ',
-'confirmdeletetext'   => 'Olet tuhomassa sivun tai tiedoston ja kaiken sen historian tietokannasta. Ymmärrä teon seuraukset ja tee poisto {{GRAMMAR:genitive|{{SITENAME}}}} käytännön mukaisesti.',
+'confirmdeletetext'   => 'Olet poistamassa sivun tai tiedoston ja kaiken sen historian. Ymmärrä teon seuraukset ja tee poisto {{GRAMMAR:genitive|{{SITENAME}}}} käytäntöjen mukaisesti.',
 'actioncomplete'      => 'Toiminto suoritettu',
-'deletedtext'         => '\'\'\'$1\'\'\' on poistettu. Katso $2 nähdäksesi tallenteen viimeaikaisista poistoista.',
+'deletedtext'         => '\'\'\'[[{{ns:special}}:Undelete/$1|$1]]\'\'\' on poistettu. Katso $2 nähdäksesi listan viimeaikaisista poistoista.',
 'deletedarticle'      => 'poisti sivun $1',
 'dellogpage'          => 'Poistoloki',
 'dellogpagetext'      => 'Alla on loki viimeisimmistä poistoista.',
@@ -903,10 +960,10 @@ Palaute ja lisäapu osoitteessa:
 'rollback_short'      => 'Palautus',
 'rollbacklink'        => 'palauta',
 'rollbackfailed'      => 'Palautus epäonnistui',
-'cantrollback'        => 'Aiempaan versioon ei voi palauttaa; viimeisin kirjoittaja on sivun ainoa tekijä.',
-'alreadyrolled'       => 'Käyttäjän [[User:$2|$2]] ([[User_talk:$2|keskustelu]]) tekemiä muutoksia sivuun $1 ei voi palauttaa. Käyttäjä [[User:$3|$3]] ([[User_talk:$3|keskustelu]]) on tehnyt uudempia muutoksia.',
+'cantrollback'        => 'Aiempaan versioon ei voi palauttaa, koska viimeisin kirjoittaja on sivun ainoa tekijä.',
+'alreadyrolled'       => 'Käyttäjän [[{{ns:user}}:$2|$2]] ([[{{ns:user_talk}}:$2|keskustelu]]) tekemiä muutoksia sivuun $1 ei voi kumota, koska käyttäjä [[{{ns:user}}:$3|$3]] ([[{{ns:user_talk}}:$3|keskustelu]]) on tehnyt uudempia muutoksia.',
 'editcomment'         => 'Muokkauksen yhteenveto oli: <i>$1</i>.', // TODO NOWIKIMARKUP
-'revertpage'          => 'Käyttäjän [[Special:Contributions/$2|$2]] ([[User_talk:$2|keskustelu]]) muokkaukset palautettiin viimeisimpään käyttäjän $1 tekemään muutokseen.',
+'revertpage'          => 'Käyttäjän [[{{ns:special}}:Contributions/$2|$2]] ([[{{ns:user_talk}}:$2|keskustelu]]) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän $1 tekemään versioon.',
 
 'sessionfailure'      => 'Istuntosi kanssa on ongelma. Muutosta ei toteutettu varotoimena sessionkaappauksien takia. Käytä selaimen paluutoimintoa ja päivitä sivu, jolta tulit, ja koita uudelleen.',
 'protectlogpage'      => 'Suojausloki',
@@ -924,18 +981,20 @@ Palaute ja lisäapu osoitteessa:
 'unprotectcomment'    => 'Syy suojauksen poistoon',
 
 # Undelete
-'undelete'            => 'Palauta poistettu sivu',
-'undelete_short'      => 'Palauta $1 muokkausta',
-'undeletepage'        => 'Selaa ja palauta poistettuja sivuja',
+'undelete'            => 'Palauta poistettuja sivuja',
+'undelete_short'      => 'Palauta $1 versiota',
+'undeletepage'        => 'Poistettujen sivujen selaus',
+'viewdeletedpage'     => 'Poistettujen sivujen selaus',
 'undeletepagetext'    => 'Seuraavat sivut on poistettu, mutta ne löytyvät vielä arkistosta, joten ne ovat palautettavissa. Arkisto saatetaan tyhjentää aika ajoin.',
 'undeletearticle'     => 'Palauta poistettu sivu',
 'undeleterevisions'   => '$1 versiota arkistoitu.',
 'undeletehistory'     => 'Jos palautat sivun, kaikki versiot lisätään sivun historiaan. Jos uusi sivu samalla nimellä on luotu poistamisen jälkeen, palautetut versiot lisätään sen historiaan, ja olemassa olevaa versiota ei korvata automaattisesti.',
+'undeletehistorynoadmin' => 'Tämä sivu on poistettu. Syy sivun poistamiseen näkyy yhteenvedossa, jossa on myös tiedot, ketkä ovat muokanneet tätä sivua ennen poistamista. Sivujen varsinainen sisältö on vain ylläpitäjien luettavissa.',
 'undeleterevision'    => 'Poistettu versio hetkellä $1',
 'undeletebtn'         => 'Palauta!',
-'undeletedarticle'    => 'palautti sivun $1',
+'undeletedarticle'    => 'palautti sivun [[$1]]',
 'undeletedrevisions'  => '$1 versiota palautettiin',
-'undeletedtext'       => 'Sivu [[$1]] on palautettu onnistuneesti. Lista viimeisimmistä poistoista ja palautuksista on [[Special:Log/delete|poistolokissa]].',
+'undeletedtext'       => 'Sivu [[:$1|$1]] on palautettu onnistuneesti. Lista viimeisimmistä poistoista ja palautuksista on [[Special:Log/delete|poistolokissa]].',
 
 'namespace'           => 'Nimiavaruus',
 'invert'              => 'Käännä nimiavaruusvalinta päinvastaiseksi',
@@ -943,19 +1002,20 @@ Palaute ja lisäapu osoitteessa:
 # Contributions
 #
 'contributions'       => 'Käyttäjän muokkaukset',
-'mycontris'           => 'Omat muokkaukset',
+'mycontris'           => 'Muokkaukset',
 'contribsub'          => 'Käyttäjän $1 muokkaukset',
 'nocontribs'          => 'Näihin ehtoihin sopivia muokkauksia ei löytynyt.',
 'ucnote'              => 'Alla on \'\'\'$1\'\'\' viimeisintä tämän käyttäjän tekemää muokkausta viimeisten \'\'\'$2\'\'\' päivän aikana.',
 'uclinks'             => 'Katso $1 viimeisintä muokkausta; katso $2 viimeisintä päivää.',
 'uctop'               => ' (uusin)' ,
 'newbies'             => 'tulokkaat',
+'contribs-showhideminor' => '$1 pienet muutokset',
 
 # What links here
 #
 'whatlinkshere'       => 'Tänne viittaavat sivut',
 'notargettitle'       => 'Ei kohdetta',
-'notargettext'        => 'Et ole määritellyt kohdesivua tai -käyttäjää johon toiminto kohdustuu.',
+'notargettext'        => 'Et ole määritellyt kohdesivua tai -käyttäjää johon toiminto kohdistuu.',
 'linklistsub'         => 'Lista linkeistä',
 'linkshere'           => 'Seuraavilta sivuilta on linkki tälle sivulle:',
 'nolinkshere'         => 'Tänne ei ole linkkejä.',
@@ -964,30 +1024,33 @@ Palaute ja lisäapu osoitteessa:
 # Block/unblock IP
 #
 'blockip'             => 'Aseta muokkausesto',
-'blockiptext'         => 'Tällä lomakkeella voit estää käyttäjän tai IP-osoitteen muokkausoikeudet. Muokkausoikeuksien poistamiseen pitää olla syy, esimerkiksi sivujen vandalisointi. Kirjoita syy siihen varattuun kenttään.<br />Vanhenemisajat noudattavat GNUn standardimuotoa, joka on kuvattu tar-manuaalissa ([http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html] [EN]), esimerkiksi ”1 hour”, ”2 days”, ”next Wednesday”, ”1 January 2017”. Esto voi olla myös ”indefinite” tai ”infinite”, joka kestää siihen asti, että se poistetaan.',
+'blockiptext'         => 'Tällä lomakkeella voit estää käyttäjän tai IP-osoitteen muokkausoikeudet. Muokkausoikeuksien poistamiseen pitää olla syy, esimerkiksi sivujen vandalisointi. Kirjoita syy siihen varattuun kenttään.<br />Vanhenemisajat noudattavat GNUn standardimuotoa, joka on kuvattu tar-manuaalissa ([http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html] [EN]), esimerkiksi ”1 hour”, ”2 days”, ”next Wednesday”, 2005-08-29”. Esto voi olla myös ”indefinite” tai ”infinite”, joka kestää kunnes se poistetaan.',
 'ipaddress'           => 'IP-osoite', // TODO bug
 'ipadressorusername'  => 'IP-osoite tai käyttäjätunnus',
 'ipbexpiry'           => 'Umpeutuu',
 'ipbreason'           => 'Syy',
-'ipbsubmit'           => 'Estä tämä osoite',
+'ipbsubmit'           => 'Estä',
 'ipbother'            => 'Vapaamuotoinen kesto',
 'ipboptions'          => '2 tuntia:2 hours,1 päivä:1 day,3 päivää:3 days,1 viikko:1 week,2 viikkoa:2 weeks,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year,ikuisesti:infinite',
 'ipbotheroption'      => 'Muu kesto',
 'badipaddress'        => 'IP-osoite on väärin muotoiltu.',
 'blockipsuccesssub'   => 'Esto onnistui',
-'blockipsuccesstext'  => 'Käyttäjä tai IP-osoite \'\'\'$1\'\'\' on estetty.<br />Nykyiset estot löytyvät [[Special:Ipblocklist|estolistalta]].',
-'unblockip'           => 'Poista IP-osoitteen muokkausesto',
-'unblockiptext'       => 'Käytä alla olevaa lomaketta poistaaksesi kirjoitusesto aikaisemmin estetyltä IP-osoitteelta.',
-'ipusubmit'           => 'Poista tämän osoitteen esto',
-'ipusuccess'          => 'IP-osoitteen \'\'\'$1\'\'\' esto poistettu',
+'blockipsuccesstext'  => 'Käyttäjä tai IP-osoite \'\'\'$1\'\'\' on estetty.<br />Nykyiset estot löytyvät [[{{ns:special}}:Ipblocklist|estolistalta]].',
+'unblockip'           => 'Muokkauseston poisto',
+'unblockiptext'       => 'Tällä lomakkeella voit poistaa käyttäjän tai IP-osoitteen muokkauseston.',
+'ipusubmit'           => 'Poista esto',
+'ipusuccess'          => 'IP-osoitteen tai käyttäjän <b>$1</b> esto poistettu', // TODO NOWIKIMARKUP
 'ipblocklist'         => 'Lista estetyistä IP-osoitteista',
-'blocklistline'       => '$1 — $2 on estänyt käyttäjän $3 (vanhenee $4)',
+'ipblocklistempty'    => 'Estolista on tyhjä.',
+'blocklistline'       => '$1 — $2 on estänyt käyttäjän $3 ($4)',
+'infiniteblock'       => 'ikuisesti',
+'expiringblock'       => 'vanhenee $1',
 'blocklink'           => 'esto',
 'unblocklink'         => 'poista esto',
 'contribslink'        => 'muokkaukset',
 'autoblocker'         => 'Olet automaattisesti estetty, koska jaat IP-osoitteen käyttäjän $1 kanssa. Eston syy: $2.', // TODO: IS WIKIMARKUP?
 'blocklogpage'        => 'Estoloki',
-'blocklogentry'       => 'esti käyttäjän $1. Vanhenee: $2',
+'blocklogentry'       => 'esti käyttäjän tai IP-osoitteen $1. Eston kesto: $2',
 'blocklogtext'        => 'Tässä on loki muokkausestoista ja niiden purkamisista. Automaattisesti estettyjä IP-osoitteita ei kirjata. Tutustu [[Special:Ipblocklist|estolistaan]] nähdäksesi listan tällä hetkellä voimassa olevista estoista.',
 'unblocklogentry'     => 'poisti käyttäjältä $1 muokkauseston',
 'range_block_disabled'=> 'Ylläpitäjän oikeis luoda alue-estoja ei ole käytöstä.',
@@ -996,8 +1059,10 @@ Palaute ja lisäapu osoitteessa:
 'proxyblocker'        => 'Välityspalvelinesto',
 'proxyblockreason'    => 'IP-osoitteestasi on estetty muokkaukset, koska se on avoin välityspalvelin. Ota yhteyttä Internet-palveluntarjoajaasi tai tekniseen tukeen ja kerro heillä tästä tietoturvaongelmasta.',
 'proxyblocksuccess'   => 'Valmis.',
-'sorbs'               => 'SORBS DNSBL',
+'sorbs'               => 'SORBS-DNSBL',
 'sorbsreason'         => 'IP-osoitteesti on listattu avoimena välityspalvelimena [http://www.sorbs.net SORBSin] mustalla listalla.',
+'sorbs_create_account_reason' => 'IP-osoitteesi on listattu avoimena välityspalvelimena [http://www.sorbs.net SORBSin] mustalla listalla. Et voi luoda käyttäjätunnusta.',
+
 
 # Developer tools
 #
@@ -1023,9 +1088,10 @@ Palaute ja lisäapu osoitteessa:
 'makesysopok'         => 'Käyttäjä <b>$1</b> on nyt ylläpitäjä.',
 'makesysopfail'       => 'Käyttäjästä <b>$1</b> ei voitu tehdä ylläpitäjää. Kirjoititko nimen oikein?', // TODO: NOWIKIMARKUP
 'setbureaucratflag'   => 'Tee käyttäjästä myös byrokraatti',
+'setstewardflag'      => 'Tee käyttäjästä ylivalvoja',
 'bureaucratlog'       => 'Byrokraattiloki',
 'rightslogtext'       => 'Alla on loki on käyttäjien käyttöoikeuksien muutoksista.',
-'bureaucratlogentry'  => 'Käyttäjän $1 ryhmäoikeudet muutettiin ryhmästä $2 ryhmään $3', // TODO: Inflect me
+'bureaucratlogentry'  => 'Käyttäjän [[$1|]] sai oikeudet$3', // TODO: Inflect me
 'rights'              => 'Oikeudet:',
 'set_user_rights'     => 'Aseta käyttäjän oikeudet',
 'user_rights_set'     => 'Käyttäjän <b>$1</b> oikeudet päivitetty.',
@@ -1086,7 +1152,7 @@ Näissä tapauksissa sivut täytyy siirtää tai yhdistää käsin.',
 
 Syötä sivujen otsikoita riveittäin alla olevaan laatikkoon. Valitse myös, haluatko kaikki versiot sivuista, vai ainoastaan nykyisen version.
 
-Jälkimmäisessä tapauksessa voit myös käyttää linkkiä. Esimerkiksi [[Juna]]sivun saa vietyä linkistä [[Special:Export/Juna]].',
+Jälkimmäisessä tapauksessa voit myös käyttää linkkiä. Esimerkiksi sivun {{Mediawiki:mainpage}} saa vietyä linkistä [[Special:Export/{{Mediawiki:mainpage}}]].',
 'exportcuronly'       => 'Liitä mukaan ainoastaan uusin versio, ei koko historiaa.',
 
 # Namespace 8 related
@@ -1106,14 +1172,17 @@ Jälkimmäisessä tapauksessa voit myös käyttää linkkiä. Esimerkiksi [[Juna
 'filemissing'         => 'Tiedosto puuttuu',
 
 # Special:Import
-'import'            => 'Tuo sivuja',
-'importinterwiki'   => 'Tuo sivuja lähiwikeistä',
-'importtext'        => 'Vie sivuja lähdewikistä käyttäen Special:Export-työkalua. Tallenna tiedot koneellesi ja tallenna ne täällä.',
-'importfailed'      => 'Tuonti epäonnistui: $1',
-'importnotext'      => 'Tyhjä tai ei tekstiä',
-'importsuccess'     => 'Tuonti onnistui!',
+'import'              => 'Tuo sivuja',
+'importinterwiki'     => 'Tuo sivuja lähiwikeistä',
+'importtext'          => 'Vie sivuja lähdewikistä käyttäen Special:Export-työkalua. Tallenna tiedot koneellesi ja tallenna ne täällä.',
+'importfailed'        => 'Tuonti epäonnistui: $1',
+'importnotext'        => 'Tyhjä tai ei tekstiä',
+'importsuccess'       => 'Tuonti onnistui!',
 'importhistoryconflict' => 'Sivusta on olemassa tuonnin kanssa ristiriitainen muokkausversio. Tämä sivu on saatettu tuoda jo aikaisemmin.',
-'importnosources'   => 'Wikienvälisiä tuontilähteitä ei ole määritelty ja suorat historiatallennukset on poistettu käytöstä.',
+'importnosources'     => 'Wikienvälisiä tuontilähteitä ei ole määritelty ja suorat historiatallennukset on poistettu käytöstä.',
+'importnofile'        => 'Mitään tuotavaa tiedostoa ei lähetetty.',
+'importuploaderror'   => 'Tiedoston lähettäminen epäonnistui. Tiedosto saattaa olla liian suuri.',
+
 
 # Keyboard access keys for power users
 'accesskey-search'    => 'f',
@@ -1177,7 +1246,6 @@ Jälkimmäisessä tapauksessa voit myös käyttää linkkiä. Esimerkiksi [[Juna
 'mw_math_modern'      => 'Suositus nykyselaimille',
 'mw_math_mathml'      => 'Näytä MathML:nä jos mahdollista (kokeellinen)',
 
-// HOX
 # Patrolling
 'markaspatrolleddiff'   => 'Merkitse tarkastetuksi',
 'markaspatrolledlink'   => '[$1]',
@@ -1230,6 +1298,8 @@ ta['t-contributions'] = new Array('','Näytä lista tämän käyttäjän muokkau
 ta['t-emailuser'] = new Array('','Lähetä sähköpostia tälle käyttäjälle');
 ta['t-upload'] = new Array('u','Tallenna kuvia tai muita mediatiedostoja');
 ta['t-specialpages'] = new Array('q','Näytä toimintosivut');
+ta['t-print']=new Array('', 'Lataa sivun tulostamiseen sopivalla tyylisivulla. Voit aina käyttää suoraan selaimen tulosta-toimintoa.');
+ta['t-permalink'] = new Array('', 'Ikuisesti toimiva linkki sivun tähän versioon, paitsi jos sivu poistetaan.');
 ta['ca-nstab-main'] = new Array('c','Näytä sisältösivu');
 ta['ca-nstab-user'] = new Array('c','Näytä käyttäjäsivu');
 ta['ca-nstab-media'] = new Array('c','Näytä mediasivu');
@@ -1249,31 +1319,315 @@ ta['ca-nstab-category'] = new Array('c','Näytä luokkasivu');
 'previousdiff'        => '← Edellinen muutos',
 'nextdiff'            => 'Seuraava muutos →',
 
-'imagemaxsize'        => 'Rajoita kuvien koko kuvien kuvaussivuilla arvoon: ',
-'thumbsize'           => 'Pikkukuvien koko : ',
+'imagemaxsize'        => 'Rajoita kuvien koko kuvien kuvaussivuilla arvoon ',
+'thumbsize'           => 'Pikkukuvien koko: ',
 'showbigimage'        => 'Lataa korkeatarkkuuksinen versio ($1×$2, $3 KiB)',
 
 'newimages'           => 'Uudet kuvat',
+'showhidebots'        => '($1 botit)',
 'noimages'            => 'Ei uusia kuvia.',
 
 # labels for User: and Title: on Special:Log pages
 'specialloguserlabel' => 'Käyttäjä: ',
-'speciallogtitlelabel'=> 'Otsikko: ',
+'speciallogtitlelabel'=> 'Kohde: ',
 
 'passwordtooshort'    => 'Salasanasi on liian lyhyt. Salasanan pitää olla vähintään $1 merkkiä pitkä.',
 
 # Media Warning
-'mediawarning' => '\'\'\'Varoitus\'\'\': Tämä tiedosto saattaa sisältää This file may contain vahingollista koodia, ja suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.
+'mediawarning' => '\'\'\'Varoitus\'\'\': Tämä tiedosto saattaa sisältää vahingollista koodia, ja suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.
 <hr>',
 
 'fileinfo' => '$1 KiB, MIME-tyyppi: <code>$2</code>',
 
+# Metadata
+'metadata' => 'Sisältökuvaukset',
+
+# Exif tags
+'exif-imagewidth'     =>'Leveys',
+'exif-imagelength'    =>'Korkeus',
+'exif-bitspersample'  =>'Bittiä komponentissa',
+'exif-compression'    =>'Pakkaustapa',
+'exif-photometricinterpretation' =>'Kuvapisteen koostumus',
+'exif-orientation'               =>'Suunta',
+'exif-samplesperpixel'           =>'Komponenttien lukumäärä',
+'exif-planarconfiguration'       =>'Tiedon järjestely',
+'exif-ycbcrsubsampling'          =>'Y:n ja C:n alinäytteistyssuhde',
+'exif-ycbcrpositioning'          =>'Y:n ja C:n asemointi',
+'exif-xresolution'    =>'Kuvan resoluutio leveyssuunnassa',
+'exif-yresolution'    =>'Kuvan resoluutio korkeussuunnassa',
+'exif-resolutionunit' =>'Resoluution yksikkö X- ja Y-suunnassa',
+'exif-stripoffsets'   =>'Kuvatiedon sijainti',
+'exif-rowsperstrip'   =>'Kaistan rivien lukumäärä',
+'exif-stripbytecounts'=>'Tavua pakatussa kaistassa',
+'exif-jpeginterchangeformat'       =>'Etäisyys JPEG SOI:hin',
+'exif-jpeginterchangeformatlength' =>'JPEG-tiedon tavujen lukumäärä',
+'exif-transferfunction'            =>'Siirtofunktio',
+'exif-whitepoint'                  =>'Valkoisen pisteen väriarvot',
+'exif-primarychromaticities'       =>'Päävärien väriarvot',
+'exif-ycbcrcoefficients'           =>'Väriavaruuden muuntomatriisin kertoimet',
+'exif-referenceblackwhite'         =>'Musta-valkoparin vertailuarvot',
+'exif-datetime'                    =>'Viimeksi muokattu',
+'exif-imagedescription'            =>'Kuvan nimi',
+'exif-make'           =>'Kameran valmistaja',
+'exif-model'          =>'Kameran malli',
+'exif-software'       =>'Käytetty ohjelmisto',
+'exif-artist'         =>'Tekijä',
+'exif-copyright'      =>'Tekijänoikeuden omistaja',
+'exif-exifversion'    =>'Exif-versio',
+'exif-flashpixversion'=>'Tuettu Flashpix-versio',
+'exif-colorspace'     =>'Väriavaruus',
+'exif-componentsconfiguration' =>'Kunkin komponentin määritelmä',
+'exif-compressedbitsperpixel'  =>'Kuvan pakkaustapa',
+'exif-pixelydimension'         =>'Käyttökelpoinen kuvan leveys',
+'exif-pixelxdimension'         =>'Käyttökelpoinen kuvan korkeus',
+'exif-makernote'               =>'Valmistajan merkinnät',
+'exif-usercomment'             =>'Käyttäjän kommentit',
+'exif-relatedsoundfile'        =>'Liitetty äänitiedosto',
+'exif-datetimeoriginal'        =>'Luontipäivämäärä',
+'exif-datetimedigitized'       =>'Digitointipäivämäärä',
+'exif-subsectime'              =>'Aikaleiman sekunninosat',
+'exif-subsectimeoriginal'      =>'Luontiaikaleiman sekunninosat',
+'exif-subsectimedigitized'     =>'Digitointiaikaleiman sekunninosat',
+'exif-exposuretime'            =>'Valotusaika',
+'exif-fnumber'                 =>'Aukkosuhde',
+'exif-exposureprogram'         =>'Valotusohjelma',
+'exif-spectralsensitivity'     =>'Värikirjoherkkyys',
+'exif-isospeedratings'         =>'Herkkyys (ISO)',
+'exif-oecf'                    =>'Optoelektroninen muuntokerroin',
+'exif-shutterspeedvalue'       =>'Suljinaika',
+'exif-aperturevalue'           =>'Aukko',
+'exif-brightnessvalue'         =>'Kirkkaus',
+'exif-exposurebiasvalue'       =>'Valotuksen korjaus',
+'exif-maxaperturevalue'        =>'Suurin aukko',
+'exif-subjectdistance'=>'Kohteen etäisyys',
+'exif-meteringmode'   =>'Mittaustapa',
+'exif-lightsource'    =>'Valolähde',
+'exif-flash'          =>'Salama',
+'exif-focallength'    =>'Linssin polttoväli',
+'exif-subjectarea'    =>'Kohteen ala',
+'exif-flashenergy'    =>'Salaman teho',
+'exif-spatialfrequencyresponse' =>'Tilataajuusvaste',
+'exif-focalplanexresolution'    =>'Tarkennustason X-resoluutio',
+'exif-focalplaneyresolution'    =>'Tarkennustason Y-resoluutio',
+'exif-focalplaneresolutionunit' =>'Tarkennustason resoluution yksikkö',
+'exif-subjectlocation'=>'Kohteen sijainti',
+'exif-exposureindex'  =>'Valotusindeksi',
+'exif-sensingmethod'  =>'Mittausmenetelmä',
+'exif-filesource'     =>'Tiedostolähde',
+'exif-scenetype'      =>'Kuvatyyppi',
+'exif-cfapattern'     =>'CFA-kuvio',
+'exif-customrendered' =>'Muokattu kuvankäsittely',
+'exif-exposuremode'   =>'Valotustapa',
+'exif-whitebalance'   =>'Valkotasapaino',
+'exif-digitalzoomratio'      =>'Digitaalinen suurennoskerroin',
+'exif-focallengthin35mmfilm' =>'35 mm:n filmiä vastaava polttoväli',
+'exif-scenecapturetype'      =>'Kuvan kaappaustapa',
+'exif-gaincontrol'    =>'Kuvasäätö',
+'exif-contrast'       =>'Kontrasti',
+'exif-saturation'     =>'Värikylläisyys',
+'exif-sharpness'      =>'Terävyys',
+'exif-devicesettingdescription' =>'Laitteen asetuskuvaus',
+'exif-subjectdistancerange'     =>'Kohteen etäisyysväli',
+'exif-imageuniqueid'  =>'Kuvan yksilöivä tunniste',
+'exif-gpsversionid'   =>'GPS-muotoilukoodin versio',
+'exif-gpslatituderef' =>'Pohjoinen tai eteläinen leveysaste',
+'exif-gpslatitude'    =>'Leveysaste',
+'exif-gpslongituderef'=>'Itäinen tai läntinen pituusaste',
+'exif-gpslongitude'   =>'Pituusaste',
+'exif-gpsaltituderef' =>'Korkeuden vertailukohta',
+'exif-gpsaltitude'    =>'Korkeus',
+'exif-gpstimestamp'   =>'GPS-aika (atomikello)',
+'exif-gpssatellites'  =>'Mittaukseen käytetyt satelliitit',
+'exif-gpsstatus'      =>'Vastaanottimen tila',
+'exif-gpsmeasuremode' =>'Mittaustila',
+'exif-gpsdop'         =>'Mittatarkkuus',
+'exif-gpsspeedref'    =>'Nopeuden yksikkö',
+'exif-gpsspeed'       =>'GPS-vastaanottimen nopeus',
+'exif-gpstrackref'    =>'Liikesuunnan vertailukohta',
+'exif-gpstrack'       =>'Liikesuunta',
+'exif-gpsimgdirectionref' =>'Kuvan suunnan vertailukohta',
+'exif-gpsimgdirection'    =>'Kuvan suunta',
+'exif-gpsmapdatum'        =>'Käytetty geodeettinen maanmittaustieto',
+'exif-gpsdestlatituderef' =>'Loppupisteen leveysasteen vertailukohta',
+'exif-gpsdestlatitude'    =>'Loppupisteen leveysaste',
+'exif-gpsdestlongituderef'=>'Loppupisteen pituusasteen vertailukohta',
+'exif-gpsdestlongitude'   =>'Loppupisteen pituusaste',
+'exif-gpsdestbearingref'  =>'Loppupisteen suuntiman vertailukohta',
+'exif-gpsdestbearing'     =>'Loppupisteen suuntima',
+'exif-gpsdestdistanceref' =>'Loppupisteen etäisyyden vertailukohta',
+'exif-gpsdestdistance'    =>'Loppupisteen etäisyys',
+'exif-gpsprocessingmethod'=>'GPS-käsittelymenetelmän nimi',
+'exif-gpsareainformation' =>'GPS-alueen nimi',
+'exif-gpsdatestamp'       =>'GPS-päivämäärä',
+'exif-gpsdifferential'    =>'GPS-differentiaalikorjaus',
+
+# Make & model, can be wikified in order to link to the camera and model name
+
+'exif-make-value'     => '$1',
+'exif-model-value'    =>'$1',
+'exif-software-value' => '$1',
+
+# Exif attributes
+
+'exif-compression-1'  => 'Pakkaamaton',
+'exif-compression-6'  => 'JPEG',
+
+'exif-photometricinterpretation-2' => 'RGB',
+'exif-photometricinterpretation-6' => 'YCbCr',
+
+'exif-orientation-1'  => 'Normaali', // 0th row: top; 0th column: left
+'exif-orientation-2'  => 'Käännetty vaakasuunnassa', // 0th row: top; 0th column: right
+'exif-orientation-3'  => 'Käännetty 180°', // 0th row: bottom; 0th column: right
+'exif-orientation-4'  => 'Käännetty pystysuunnassa', // 0th row: bottom; 0th column: left
+'exif-orientation-5'  => 'Käännetty 90° vastapäivään ja pystysuunnassa', // 0th row: left; 0th column: top
+'exif-orientation-6'  => 'Käännetty 90° myötäpäivään', // 0th row: right; 0th column: top
+'exif-orientation-7'  => 'Käännetty 90° myötäpäivään ja pystysuunnassa', // 0th row: right; 0th column: bottom
+'exif-orientation-8'  => 'Käännetty 90° vastapäivään', // 0th row: left; 0th column: bottom
+
+'exif-planarconfiguration-1' => 'chunky format',
+'exif-planarconfiguration-2' => 'planar format',
+
+'exif-xyresolution-i' => '$1 dpi',
+'exif-xyresolution-c' => '$1 dpc',
+
+'exif-colorspace-1'      => 'sRGB',
+'exif-colorspace-ffff.h' => 'FFFF.H',
+
+'exif-componentsconfiguration-0' => 'ei ole',
+'exif-componentsconfiguration-1' => 'Y',
+'exif-componentsconfiguration-2' => 'Cb',
+'exif-componentsconfiguration-3' => 'Cr',
+'exif-componentsconfiguration-4' => 'R',
+'exif-componentsconfiguration-5' => 'G',
+'exif-componentsconfiguration-6' => 'B',
+
+'exif-exposureprogram-0' => 'Ei määritelty',
+'exif-exposureprogram-1' => 'Käsinsäädetty',
+'exif-exposureprogram-2' => 'Perusohjelma',
+'exif-exposureprogram-3' => 'Aukon etuoikeus',
+'exif-exposureprogram-4' => 'Suljinajan etuoikeus',
+'exif-exposureprogram-5' => 'Luova ohjelma (painotettu syvyysterävyyttä)',
+'exif-exposureprogram-6' => 'Toimintaohjelma (painotettu nopeaa suljinaikaa)',
+'exif-exposureprogram-7' => 'Muotokuvatila (lähikuviin, joissa tausta on epätarkka)',
+'exif-exposureprogram-8' => 'Maisematila (maisemakuviin, joissa tausta on tarkka)',
+
+'exif-subjectdistance-value' => '$1 metriä',
+
+'exif-meteringmode-0' => 'Tuntematon',
+'exif-meteringmode-1' => 'Keskiarvo',
+'exif-meteringmode-2' => 'Keskustapainotteinen keskiarvo',
+'exif-meteringmode-3' => 'Piste',
+'exif-meteringmode-4' => 'Monipiste',
+'exif-meteringmode-5' => 'Kuvio',
+'exif-meteringmode-6' => 'Osittainen',
+'exif-meteringmode-255' => 'Muu',
+
+'exif-lightsource-0'  => 'Tuntematon',
+'exif-lightsource-1'  => 'Päivänvalo',
+'exif-lightsource-2'  => 'Loisteputki',
+'exif-lightsource-3'  => 'Hehkulamppu (keinovalo)',
+'exif-lightsource-4'  => 'Salama',
+'exif-lightsource-9'  => 'Hyvä sää',
+'exif-lightsource-10' => 'Pilvinen sää',
+'exif-lightsource-11' => 'Varjoinen',
+'exif-lightsource-12' => 'Päivänvaloloisteputki (D 5700 – 7100K)',
+'exif-lightsource-13' => 'Päivänvalkoinen loisteputki (N 4600 – 5400K)',
+'exif-lightsource-14' => 'Kylmä valkoinen loisteputki (W 3900 – 4500K)',
+'exif-lightsource-15' => 'Valkoinen loisteputki (WW 3200 – 3700K)',
+'exif-lightsource-17' => 'Oletusvalo A',
+'exif-lightsource-18' => 'Oletusvalo B',
+'exif-lightsource-19' => 'Oletusvalo C',
+'exif-lightsource-20' => 'D55',
+'exif-lightsource-21' => 'D65',
+'exif-lightsource-22' => 'D75',
+'exif-lightsource-23' => 'D50',
+'exif-lightsource-24' => 'ISO-studiohehkulamppu',
+'exif-lightsource-255'=> 'Muu valonlähde',
+
+'exif-focalplaneresolutionunit-2' => 'tuumaa',
+
+'exif-sensingmethod-1' => 'Määrittelemätön',
+'exif-sensingmethod-2' => 'Yksisiruinen värikenno',
+'exif-sensingmethod-3' => 'Kaksisiruinen värikenno',
+'exif-sensingmethod-4' => 'Kolmisiruinen värikenno',
+'exif-sensingmethod-5' => 'Sarjavärikenno',
+'exif-sensingmethod-7' => 'Trilineaarikenno',
+'exif-sensingmethod-8' => 'Sarjalineaarivärikenno',
+
+'exif-filesource-3'   => 'DSC',
+
+'exif-scenetype-1'    => 'Suoraan valokuvattu kuva',
+
+'exif-customrendered-0' => 'Normaali käsittely',
+'exif-customrendered-1' => 'Muokattu käsittely',
+
+'exif-exposuremode-0' => 'Automaattinen valotus',
+'exif-exposuremode-1' => 'Käsinsäädetty valotus',
+'exif-exposuremode-2' => 'Automaattinen haarukointi',
+
+'exif-whitebalance-0' => 'Automaattinen valkotasapaino',
+'exif-whitebalance-1' => 'Käsinsäädetty valkotasapaino',
+
+'exif-scenecapturetype-0' => 'Perus',
+'exif-scenecapturetype-1' => 'Maisema',
+'exif-scenecapturetype-2' => 'Henkilökuva',
+'exif-scenecapturetype-3' => 'Yökuva',
+
+'exif-gaincontrol-0'  => 'Ei ole',
+'exif-gaincontrol-1'  => 'Matala ylävahvisus',
+'exif-gaincontrol-2'  => 'Korkea ylävahvistus',
+'exif-gaincontrol-3'  => 'Matala alavahvistus',
+'exif-gaincontrol-4'  => 'Korkea alavahvistus',
+
+'exif-contrast-0'     => 'Normaali',
+'exif-contrast-1'     => 'Pehmeä',
+'exif-contrast-2'     => 'Kova',
+
+'exif-saturation-0'   => 'Normaali',
+'exif-saturation-1'   => 'Alhainen värikylläisyys',
+'exif-saturation-2'   => 'Korkea värikylläisyys',
+
+'exif-sharpness-0'    => 'Normaali',
+'exif-sharpness-1'    => 'Pehmeä',
+'exif-sharpness-2'    => 'Kova',
+
+'exif-subjectdistancerange-0' => 'Tuntematon',
+'exif-subjectdistancerange-1' => 'Makro',
+'exif-subjectdistancerange-2' => 'Lähikuva',
+'exif-subjectdistancerange-3' => 'Kaukokuva',
+
+// Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n'  => 'Pohjoista leveyttä',
+'exif-gpslatitude-s'  => 'Eteläistä leveyttä',
+
+// Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'Itäistä pituutta',
+'exif-gpslongitude-w' => 'Läntistä pituustta',
+
+'exif-gpsstatus-a'    => 'Mittaus käynnissä',
+'exif-gpsstatus-v'    => 'Ristiinmittaus',
+
+'exif-gpsmeasuremode-2' => '2-ulotteinen mittaus',
+'exif-gpsmeasuremode-3' => '3-ulotteinen mittaus',
+
+// Pseudotags used for GPSSpeedRef and GPSDestDistanceRef
+'exif-gpsspeed-k'     => 'km/h',
+'exif-gpsspeed-m'     => 'mailia tunnissa',
+'exif-gpsspeed-n'     => 'solmua',
+
+// Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'Todellinen suunta',
+'exif-gpsdirection-m' => 'Magneettinen suunta',
+
 # external editor support
 'edit-externally'     => 'Muokkaa tätä tiedostoa ulkoisessa sovelluksessa',
 'edit-externally-help'=> 'Katso [http://meta.wikimedia.org/wiki/Help:External_editors ohjeet], jos haluat lisätietoja.',
 
+'recentchangesall'    => "kaikki", // unsure
+'imagelistall'        => "kaikki", // unsure
+'watchlistall1'       => 'kaikkia',
 'watchlistall2'       => ', koko historia',
-'contributionsall'    => 'kaikki',
+'namespacesall'       => 'kaikki',
 
 # E-mail address confirmation
 'confirmemail'        => 'Varmenna sähköpostiosoite',
@@ -1301,150 +1655,277 @@ Jos tämä tunnus ei ole sinun, ÄLÄ seuraa linkkiä. Varmennuskoodi vanhenee $
 'searchfulltext'      => 'Etsi koko tekstiä',
 'createarticle'       => 'Luo sivu',
 
+# delete conflict
+
+'deletedwhileediting' => '<center>\'\'\'Varoitus\'\'\': Tämä sivu on poistettu sen jälkeen, kun aloitit sen muokkaamisen!</center>',
+'confirmrecreate' => 'Käyttäjä \'\'\'[[{{ns:user}}:$1|$1]]\'\'\' ([[{{ns:user_talk}}:$1|keskustelu]]) poisti sivun sen jälkeen, kun aloit muokata sitä. Syy oli:
+: \'\'$2\'\'
+Ole hyvä ja varmista, että haluat luoda sivun uudelleen.',
+'recreate' => 'Luo uudelleen',
+'tooltip-recreate' => '',
+
+'unit-pixel' => ' px',
+
+# HTML dump
+'redirectingto' => 'Uudelleenohjataan sivulle [[$1]]...',
+
 );
 
 
-  #--------------------------------------------------------------------------
-  # Internationalisation code
-  #--------------------------------------------------------------------------
+       #--------------------------------------------------------------------------
+       # Internationalisation code
+       #--------------------------------------------------------------------------
 
 class LanguageFi extends LanguageUtf8 {
-  function LanguageFi() {
-    global $wgNamespaceNamesFi, $wgMetaNamespace;
-    LanguageUtf8::LanguageUtf8();
-    $wgNamespaceNamesFi[NS_PROJECT_TALK] = 'Keskustelu_' . $this->convertGrammar( $wgMetaNamespace, 'elative' );
-  }
-
-  function getBookstoreList () {
-    global $wgBookstoreListFi ;
-    return $wgBookstoreListFi ;
-  }
-
-  function getNamespaces() {
-    global $wgNamespaceNamesFi;
-    return $wgNamespaceNamesFi;
-  }
-
-  function getQuickbarSettings() {
-    global $wgQuickbarSettingsFi;
-    return $wgQuickbarSettingsFi;
-  }
-
-  function getSkinNames() {
-    global $wgSkinNamesFi;
-    return $wgSkinNamesFi;
-  }
-
-  function date( $ts, $adj = false ) {
-    if ( $adj ) { $ts = $this->userAdjust( $ts ); }
-
-    $d = (0 + substr( $ts, 6, 2 )) . '. ' .
-    $this->getMonthName( substr( $ts, 4, 2 ) ) . 'ta ' . substr( $ts, 0, 4 );
-    return $d;
-  }
-
-  function time( $ts, $adj = false, $seconds = true ) {
-    if ( $adj ) { $ts = $this->userAdjust( $ts ); }
-
-    $t = substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 );
-    if ( $seconds ) {
-    $t .= ':' . substr( $ts, 12, 2 );
-    }
-    return $t;
-  }
-
-  function timeanddate( $ts, $adj = false ) {
-    return $this->date( $ts, $adj ) . ' kello ' . $this->time( $ts, $adj );
-  }
-
-  function getMessage( $key ) {
-    global $wgAllMessagesFi;
-    if( isset( $wgAllMessagesFi[$key] ) ) {
-      return $wgAllMessagesFi[$key];
-    } else {
-      return parent::getMessage( $key );
-    }
-  }
-
-  /**
-   * Finnish numeric formatting is 123 456,78.
-   * Notice that the space is non-breaking.
-   */
-  function formatNum( $number, $year = false ) {
-    return $year ? $number : strtr($this->commafy($number), '.,', ", " );
-  }
-
-  /**
-   * Avoid grouping whole numbers between 0 to 9999
-   */
-  function commafy($_) {
-    if (!preg_match('/^\d{1,4}$/',$_)) {
-      return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
-    } else {
-      return $_;
-    }
-  }
-
-  # Convert from the nominative form of a noun to some other case
-  # Invoked with {{GRAMMAR:case|word}}
-  function convertGrammar( $word, $case ) {
-    # These rules are not perfect, but they are currently only used for site names so it doesn't
-    # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
-    switch ( $case ) {
-      case 'genitive':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaattien';
-        } else {
-          $word .= 'n';
-        }
-      break;
-      case 'elative':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaateista';
-        } else {
-          if ( mb_substr($word, -1) == 'y' ) {
-            $word .= 'stä';
-          } else {
-            $word .= 'sta';
-          }
-        }
-        break;
-      case 'partitive':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaatteja';
-        } else {
-          if ( mb_substr($word, -1) == 'y' ) {
-            $word .= 'ä';
-          } else {
-            $word .= 'a';
-          }
-        }
-        break;
-      case 'illative':
-        # Double the last letter and add 'n'
-        # mb_substr has a compatibility function in GlobalFunctions.php
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaatteihin';
-        } else {
-          $word = $word . mb_substr($word,-1) . 'n';
-        }
-        break;
-      case 'inessive':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaateissa';
-        } else {
-          if ( mb_substr($word, -1) == 'y' ) {
-            $word .= 'ssä';
-          } else {
-            $word .= 'ssa';
-          }
-        }
-        break;
-
-
-    }
-    return $word;
-  }
+       function LanguageFi() {
+               global $wgNamespaceNamesFi, $wgMetaNamespace;
+               LanguageUtf8::LanguageUtf8();
+               $wgNamespaceNamesFi[NS_PROJECT_TALK] = 'Keskustelu_' . $this->convertGrammar( $wgMetaNamespace, 'elative' );
+       }
+
+       function getBookstoreList () {
+               global $wgBookstoreListFi ;
+               return $wgBookstoreListFi ;
+       }
+
+       function getNamespaces() {
+               global $wgNamespaceNamesFi;
+               return $wgNamespaceNamesFi;
+       }
+
+       function getQuickbarSettings() {
+               global $wgQuickbarSettingsFi;
+               return $wgQuickbarSettingsFi;
+       }
+
+       function getSkinNames() {
+               global $wgSkinNamesFi;
+               return $wgSkinNamesFi;
+       }
+
+       function getDateFormats() {
+               global $wgDateFormatsFi;
+               return $wgDateFormatsFi;
+       }
+
+       /**
+        * See Language.php for documentation
+        */
+       function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+               if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+               $yyyy = substr( $ts, 0, 4 );
+               $mm = substr( $ts, 4, 2 );
+               $m = 0 + $mm;
+               $mmmm = $this->getMonthName( $mm ) . 'ta';
+               $dd = substr( $ts, 6, 2 );
+               $d = 0 + $dd;
+
+               $datePreference = $this->dateFormat($format);
+               switch( $datePreference ) {
+                       case '3': return "$d.$m.$yyyy";
+                       case MW_DATE_ISO: return "$yyyy-$mm-$dd";
+                       default: return "$d. $mmmm $yyyy";
+               }
+       }
+
+       /**
+        * See Language.php for documentation
+        */
+       function time( $ts, $adj = false, $format = true, $timecorrection = false ) {
+               if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+               $hh = substr( $ts, 8, 2 );
+               $mm =  substr( $ts, 10, 2 );
+               $ss = substr( $ts, 12, 2 );
+
+               $datePreference = $this->dateFormat($format);
+               switch( $datePreference ) {
+                       case '2':
+                       case MW_DATE_ISO: return "$hh:$mm:$ss";
+                       default: return "$hh.$mm";
+               }
+       }
+
+       /**
+        * See Language.php for documentation
+        */
+       function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
+               $date = $this->date( $ts, $adj, $format, $timecorrection );
+               $time = $this->time( $ts, $adj, $format, $timecorrection );
+
+               $datePreference = $this->dateFormat($format);
+               switch( $datePreference ) {
+                       case '3':
+                       case MW_DATE_ISO: return "$date $time";
+                       default: return "$date kello $time";
+               }
+       }
+
+       function getMessage( $key ) {
+               global $wgAllMessagesFi;
+               if( isset( $wgAllMessagesFi[$key] ) ) {
+                       return $wgAllMessagesFi[$key];
+               } else {
+                       return parent::getMessage( $key );
+               }
+       }
+
+       /**
+        * Finnish numeric formatting is 123 456,78.
+        * Notice that the space is non-breaking.
+        */
+       function formatNum( $number, $year = false ) {
+               return $year ? $number : strtr($this->commafy($number), '.,', ", " );
+       }
+
+       /**
+        * Avoid grouping whole numbers between 0 to 9999
+        */
+       function commafy($_) {
+               if (!preg_match('/^\d{1,4}$/',$_)) {
+                       return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
+               } else {
+                       return $_;
+               }
+       }
+
+       # Convert from the nominative form of a noun to some other case
+       # Invoked with {{GRAMMAR:case|word}}
+       function convertGrammar( $word, $case ) {
+               # These rules are not perfect, but they are currently only used for site names so it doesn't
+               # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+               switch ( $case ) {
+                       case 'genitive':
+                               if ( $word == 'Wikisitaatit' ) {
+                                       $word = 'Wikisitaattien';
+                               } else {
+                                       $word .= 'n';
+                               }
+                       break;
+                       case 'elative':
+                               if ( $word == 'Wikisitaatit' ) {
+                                       $word = 'Wikisitaateista';
+                               } else {
+                                       if ( mb_substr($word, -1) == 'y' ) {
+                                               $word .= 'stä';
+                                       } else {
+                                               $word .= 'sta';
+                                       }
+                               }
+                               break;
+                       case 'partitive':
+                               if ( $word == 'Wikisitaatit' ) {
+                                       $word = 'Wikisitaatteja';
+                               } else {
+                                       if ( mb_substr($word, -1) == 'y' ) {
+                                               $word .= 'ä';
+                                       } else {
+                                               $word .= 'a';
+                                       }
+                               }
+                               break;
+                       case 'illative':
+                               # Double the last letter and add 'n'
+                               # mb_substr has a compatibility function in GlobalFunctions.php
+                               if ( $word == 'Wikisitaatit' ) {
+                                       $word = 'Wikisitaatteihin';
+                               } else {
+                                       $word = $word . mb_substr($word,-1) . 'n';
+                               }
+                               break;
+                       case 'inessive':
+                               if ( $word == 'Wikisitaatit' ) {
+                                       $word = 'Wikisitaateissa';
+                               } else {
+                                       if ( mb_substr($word, -1) == 'y' ) {
+                                               $word .= 'ssä';
+                                       } else {
+                                               $word .= 'ssa';
+                                       }
+                               }
+                               break;
+
+               }
+               return $word;
+       }
+
+       function translateBlockExpiry( $str ) {
+               /*
+                       'ago', 'now', 'today', 'this', 'next',
+                       'first', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth',
+                       'tomorrow', 'yesterday'
+
+                       $months = 'january:tammikuu,february:helmikuu,march:maaliskuu,april:huhtikuu,may:toukokuu,june:kesäkuu,' .
+                               'july:heinäkuu,august:elokuu,september:syyskuu,october:lokakuu,november:marraskuu,december:joulukuu,' .
+                               'jan:tammikuu,feb:helmikuu,mar:maaliskuu,apr:huhtikuu,jun:kesäkuu,jul:heinäkuu,aug:elokuu,sep:syyskuu,'.
+                               'oct:lokakuu,nov:marraskuu,dec:joulukuu,sept:syyskuu';
+               */
+               $weekds = array(
+                       'monday' => 'maanantai',
+                       'tuesday' => 'tiistai',
+                       'wednesday' => 'keskiviikko',
+                       'thursay' => 'torstai',
+                       'friday' => 'perjantai',
+                       'saturday' => 'lauantai',
+                       'sunday' => 'sunnuntai',
+                       'mon' => 'ma',
+                       'tue' => 'ti',
+                       'tues' => 'ti',
+                       'wed' => 'ke',
+                       'wednes' => 'ke',
+                       'thu' => 'to',
+                       'thur' => 'to',
+                       'thurs' => 'to',
+                       'fri' => 'pe',
+                       'sat' => 'la',
+                       'sun' => 'su',
+                       'next' => 'seuraava',
+                       'tomorrow' => 'huomenna',
+                       'ago' => 'sitten',
+                       'seconds' => 'sekuntia',
+                       'second' => 'sekunti',
+                       'secs' => 's',
+                       'sec' => 's',
+                       'minutes' => 'minuuttia',
+                       'minute' => 'minuutti',
+                       'mins' => 'min',
+                       'min' => 'min',
+                       'days' => 'päivää',
+                       'day' => 'päivä',
+                       'hours' => 'tuntia',
+                       'hour' => 'tunti',
+                       'weeks' => 'viikkoa',
+                       'week' => 'viikko',
+                       'fortnights' => 'tuplaviikkoa',
+                       'fortnight' => 'tuplaviikko',
+                       'months' => 'kuukautta',
+                       'month' => 'kuukausi',
+                       'years' => 'vuotta',
+                       'year' => 'vuosi',
+                       'infinite' => 'ikuisesti',
+                       'indefinite' => 'ikuisesti'
+               );
+
+               $final = '';
+               $tokens = explode ( ' ', $str);
+               foreach( $tokens as $item ) {
+                       if ( !is_numeric($item) ) {
+                               if ( count ( explode( '-', $item ) ) == 3 && strlen($item) == 10 ) {
+                                       list( $yyyy, $mm, $dd ) = explode( '-', $item );
+                                       $final .= ' ' . $this->date( "{$yyyy}{$mm}{$dd}00000000");
+                                       continue;
+                               }
+                               if( isset( $weekds[$item] ) ) {
+                                       $final .= ' ' . $weekds[$item];
+                                       continue;
+                               }
+                       }
+
+                       $final .= ' ' . $item;
+               }
+       return '<span class="blockexpiry" title="' . htmlspecialchars($str). '">”' . trim( $final ) . '”</span>';
+       }
 }
 
 ?>