Small updates
[lhc/web/wiklou.git] / languages / LanguageFi.php
index 028155e..2026a09 100644 (file)
@@ -7,64 +7,56 @@
 
 require_once( 'LanguageUtf8.php' );
 
-# Revised 2005-04-08 for MediaWiki 1.4.0 -- Nikerabbit
-
-# The names of the namespaces can be set here, but the numbers
-# are magical, so don't change or move them!  The Namespace class
-# encapsulates some of the magic-ness.
-# See Language.php for more notes.
+# 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',
-  'nostalgia'         => 'Nostalgia',
-  'cologneblue'       => 'Kölnin sininen',
-  'davinci'           => 'DaVinci',
-  'mono'              => 'Mono',
-  'monobook'          => 'MonoBook',
-  'myskin'            => 'Oma tyylisivu',
-  'chick'             => 'Chick' // kenties ranskan "chic" 'tyylikäs'? --Mikalaari | Peruskini, ei tällä hetkellä käytössä -- Nikerabbit
+       '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'
 );
-//myskinin nyk. toiminnallisuus on se, että saa käyttää selaimen "käyttäjän tyylisivu"-toimintoa
 
 /* 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;
 
-#-------------------------------------------------------------------
-# Default messages
-#-------------------------------------------------------------------
-
-
 # Current practices (may be changed if not good ones)
 # Refer namespaces with the English name or 'Project' in case of project namespace
 # Avoid any hard coded references to any particular subject which may not apply everywhere, e.g. artikkeli, wikipedia
@@ -72,21 +64,23 @@ require_once( 'LanguageUtf8.php' );
 # Avoid unnecessary parenthesis, quotes and html code
 #
 
-# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and
-# hyphen (-). If you need more characters, you may be able to change
-# the regex in MagicWord::initRegex
+#-------------------------------------------------------------------
+# Translated messages
+#-------------------------------------------------------------------
+
 /* 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. Tämä ei toimi kaikilla selaimilla.',
+'tog-usenewrc'        => 'Kehittynyt tuoreet muutokset -listaus (JavaScript)',
 'tog-numberheadings'  => 'Numeroi otsikot',
 'tog-showtoolbar'     => 'Näytä työkalupalkki',
 'tog-editondblclick'  => 'Muokkaa sivuja kaksoisnapsautuksella (JavaScript)',
-'tog-editsection'     => 'Näytä muokkauslinkit jokaisen kappaleen yläpuolella',
-'tog-editsectiononrightclick' => 'Muokkaa kappaleita otsikon oikealla hiirennapsautuksella (JavaScript)',
+'tog-editsection'     => 'Näytä muokkauslinkit jokaisen osion yläpuolella',
+'tog-editsectiononrightclick' => 'Muokkaa osioita napsauttamalla otsikkoa hiiren oikealla painikkeella (JavaScript)',
 'tog-showtoc'         =>'Näytä sisällysluettelo sivuille, joilla yli 3 otsikkoa',
 'tog-rememberpassword'=> 'Älä kysy salasanaa saman yhteyden eri istuntojen välillä',
 'tog-editwidth'       => 'Muokkauskenttä on sivun levyinen',
@@ -95,7 +89,21 @@ require_once( 'LanguageUtf8.php' );
 'tog-previewontop'    => 'Näytä esikatselu muokkauskentän yläpuolella',
 'tog-previewonfirst'  => 'Näytä esikatselu heti, kun muokkaus aloitetaan',
 'tog-nocache'         => 'Älä tallenna sivuja välimuistiin',
+'tog-enotifwatchlistpages' => 'Lähetä sähköpostiviesti tarkkailtujen sivujen muutoksista',
+'tog-enotifusertalkpages'  => 'Lähetä sähköpostiviesti, kun käyttäjäsivun keskustelusivu muuttuu',
+'tog-enotifminoredits'     => 'Lähetä sähköpostiviesti myös pienistä muokkauksista',
+'tog-enotifrevealaddr'     => 'Näytä sähköpostiosoitteeni muille lähetetyissä ilmoituksissa',
+'tog-shownumberswatching'  => 'Näytä sivua tarkkailevien käyttäjien määrä',
 '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',
@@ -117,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).',
@@ -148,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
@@ -168,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',
@@ -184,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',
@@ -207,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',
@@ -214,21 +226,34 @@ 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.',
-'gnunote'             => 'Kaikki teksti on saatavilla <a class=internal href="$wgScriptPath/GNU_FDL">GNU Free Documentation -lisenssin</a> ehdoilla.',
 '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',
 'developertext'       => 'Yrittämäsi toiminnon voi suorittaa vain henkilö, jolla on ohjelmistokehittäjänoikeudet. Katso $1.',
-'bureaucrattitle'     => 'Tämän toiminnon suorittamiseen tarvitaan byrokraattioikeudet',
-'bureaucrattext'      => 'Tämän toiminnon voivat suorittaa vain ylläpitäjät, joilla on byrokraattioikeudet.',
+
+'badaccess'           => 'Lupa evätty',
+'badaccesstext'       => 'Toiminto, jonka halusit suorittaa on rajoitettu käyttäjille, joilla on oikeus "$2". Katso $1.',
+
+'versionrequired'     => 'Mediawikistä tarvitaan vähintään versio $1',
+'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}}',
@@ -242,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
@@ -252,7 +279,7 @@ require_once( 'LanguageUtf8.php' );
 'nstab-media'         => 'Media',
 'nstab-special'       => 'Toiminto',
 'nstab-wp'            => 'Projektisivu',
-'nstab-image'         => 'Kuva',
+'nstab-image'         => 'Tiedosto',
 'nstab-mediawiki'     => 'Järjestelmäviesti',
 'nstab-template'      => 'Malline',
 'nstab-help'          => 'Ohje',
@@ -274,20 +301,21 @@ require_once( 'LanguageUtf8.php' );
 'noconnect'           => 'Tietokantaan ei saatu yhteyttä, ole hyvä ja yritä uudestaan.',
 'nodb'                => 'Tietokantaa $1 ei voitu valita',
 'cachederror'         => 'Pyydetystä sivusta näytettiin välimuistissa oleva kopio, ja se saattaa olla vanhentunut.',
-'laggedslave'         => 'Varoitus: tämä sivu saattaa olla vanhentunut.',
+'laggedslavemode'     => 'Varoitus: Sivu ei välttämättä sisällä viimeisimpiä muutoksia.',
 '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>.',
 'filerenameerror'     => 'Tiedostoa <b>$1</b> ei voitu nimetä uudelleen nimellä <b>$2</b>.',
 'filedeleteerror'     => 'Tiedostoa <b>$1</b> ei voitu poistaa.',
 'filenotfound'        => 'Tiedostoa <b>$1</b> ei löytynyt.',
 'unexpected'          => 'Odottamaton arvo: "$1"="$2".',
-'formerror'           => 'Virhe: lomaketta ei voitu lähettää',
+'formerror'           => 'Lomakkeen tiedot eivät kelpaa',
 'badarticleerror'     => 'Toimintoa ei voi suorittaa tälle sivulle.',
-'cannotdelete'        => 'Määriteltyä sivua tai kuvaa ei voitu poistaa. Joku muu on saattanut poistaa sen.',
+'cannotdelete'        => 'Sivun tai tiedoston poisto epäonnistui. Joku muu on saattanut poistaa sen.',
 'badtitle'            => 'Virheellinen otsikko',
 'badtitletext'        => 'Pyytämäsi sivuotsikko oli virheellinen, tyhjä tai väärin linkitetty kieltenvälinen tai wikienvälinen otsikko.',
 'perfdisabled'        => 'Pahoittelut! Tämä ominaisuus ei toistaiseksi ole käytetössä, sillä se hidastaa tietokantaa niin paljon, että kukaan ei voi käyttää wikiä. Toiminto ohjelmoidaan tehokkaammaksi lähiaikoina. (Sinäkin voit tehdä sen! Tämä on vapaa ohjelmisto.)',
@@ -297,22 +325,25 @@ require_once( 'LanguageUtf8.php' );
 'viewsource'          => 'Lähdekoodi',
 'protectedtext'       => '<big>\'\'\'Tämä sivu on suojattu muutoksilta\'\'\'</big>
 * [[Talk:{{PAGENAME}}|Keskustele tästä sivusta]] muiden kanssa
-<p style="border-top:1px solid #ccc; margin-top:1.5em; padding-top:.5em">Sivun lähdekoodi:</p>',
-'seriousxhtmlerrors'  => 'XHTML-merkkauskielessä havaittiin vakavia virheitä.',
+----
+Sivun lähdekoodi:',
+'sqlhidden'           => '(SQL-kysely piilotettu)',
 
 # Login and logout pages
 #
 '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',
 'yourpasswordagain'   => 'Salasana uudelleen',
 'newusersonly'        => 'vain uudet käyttäjät',
 'remembermypassword'  => 'Muista minut',
+'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',
@@ -323,28 +354,35 @@ require_once( 'LanguageUtf8.php' );
 '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)',
-'emailforlost'        => '',
-'prefs-help-userdata' => '* <strong>Sähköposti</strong> (valinnainen): Ihmiset voivat ottaa yhteyttä sinuun sivuston kautta ilman, että sähköpostiosoitteesi paljastuu lähettäjälle. Myös unohtunut salasana voidaan lähettää sähköpostiisi.',
+'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.',
 '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.',
+
 '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.',
 'noname'              => 'Et ole määritellyt kelvollista käyttäjänimeä.',
-'loginsuccesstitle'   => 'Sisäänkirjoittautuminen onnistui',
+'loginsuccesstitle'   => 'Sisäänkirjautuminen onnistui',
 'loginsuccess'        => 'Olet kirjautunut käyttäjänä $1.',
 'nosuchuser'          => 'Käyttäjää <strong>$1</strong> ei ole olemassa. Tarkista kirjoititko nimen oikein, tai käytä alla olevaa lomaketta uuden käyttäjätunnuksen luomiseksi.', // TODO NOWIKIMARKUP
-'wrongpassword'       => 'Syöttämäsi salasana ei ole oikein. Ole hyvä ja yritä uudelleen.',
 'nosuchusershort'     => 'Käyttäjää nimellä <b>$1</b> ei ole. Kirjoititko nimen oikein?', // TODO NO WIKIMARKUP
+'wrongpassword'       => 'Syöttämäsi salasana ei ole oikein. Ole hyvä ja yritä uudelleen.',
 'mailmypassword'      => 'Lähetä minulle uusi salasana sähköpostilla',
 'passwordremindertitle' => 'Salasanamuistutus {{GRAMMAR:elative|{{SITENAME}}}}',
-// merkki
-'passwordremindertext'=> 'Joku IP-osoitteesta $1 pyysi {{GRAMMAR:partitive|{{SITENAME}}}} lähettämään uuden salasanan. Salasana käyttäjälle $2 on nyt $3. Kirjaudu sisään ja vaihda salasanasi.',
+
+'passwordremindertext'=> 'Joku IP-osoitteesta $1 pyysi {{GRAMMAR:partitive|{{SITENAME}}}} lähettämään uuden salasanan. Salasana käyttäjälle $2 on nyt $3. Kirjaudu sisään ja vaihda salasana.',
 'noemail'             => 'Käyttäjälle \'\'\'$1\'\'\' ei ole määritelty sähköpostiosoitetta.',
-'passwordsent'        => 'Uusi salasana on lähetetty käyttäjän <b>$1</b> sähköpostiosoitteeseen.',
+'passwordsent'        => 'Uusi salasana on lähetetty käyttäjän <b>$1</b> sähköpostiosoitteeseen.', // TODO NOWIKIMARKUP
+'eauthentsent'        => 'Varmennussähköposti on lähetetty annettuun sähköpostiosoitteeseen. Muita viestejä ei lähetetä, ennen kuin olet toiminut viestin ohjeiden mukaan ja varmistanut, että sähköpostiosoite kuuluu sinulle.',
 'loginend'            => '\'\'\'Rekisteröidäksesi käyttäjätunnuksen:\'\'\'
 #<small>Valitse itsellesi käyttäjätunnus ja kirjoita se \'\'käyttäjätunnus\'\'-kenttään.</small>
 #<small>Valitse salasana ja kirjoita se sekä \'\'salasana\'\'- että \'\'salasana uudelleen\'\' -kenttiin.</small>
@@ -356,6 +394,12 @@ require_once( 'LanguageUtf8.php' );
 <small>Huomaa, että {{GRAMMAR:illative|{{SITENAME}}}} kirjautuminen edellyttää evästeiden käyttöä.</small>',
 'mailerror'           => 'Virhe lähetettäessä sähköpostia: $1',
 'acct_creation_throttle_hit' => 'Olet jo luonut $1 tunnusta. Et voi luoda uutta.',
+'emailauthenticated'         => 'Sähköpostiosoitteesi varmennettiin $1.',
+'emailnotauthenticated'      => 'Sähköpostiosoitteesi ei ole vielä varmennettu. Sähköpostia ei lähetetä liittyen alla oleviin toimintoihin.',
+'noemailprefs'        => 'Sähköpostiosoitetta ei ole määritelty. <!-- Seuraavat ominaisuudet eivät ole käytössä. -->', // MAYCHANGE
+'emailconfirmlink'    => 'Varmenna sähköpostiosoite',
+'invalidemailaddress' => 'Sähköpostiosoitetta ei voida hyväksyä, koska se ei ole oikeassa muodossa. Ole hyvä ja anna oikea sähköpostiosoite tai jätä kenttä tyhjäksi.',
+
 
 
 # Edit page toolbar
@@ -374,7 +418,7 @@ require_once( 'LanguageUtf8.php' );
 'nowiki_sample'       => 'Lisää muotoilematon teksti tähän',
 'nowiki_tip'          => 'Tekstiä, jota wiki ei muotoile',
 'image_sample'        => 'Esimerkki.jpg',
-'image_tip'           => 'Sisäinen kuva',
+'image_tip'           => 'Tallennettu kuva',
 'media_sample'        => 'Esimerkki.ogg',
 'media_tip'           => 'Mediatiedostolinkki',
 'sig_tip'             => 'Allekirjoitus aikamerkinnällä',
@@ -404,7 +448,8 @@ require_once( 'LanguageUtf8.php' );
 '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\'\'\'.',
@@ -413,32 +458,30 @@ require_once( 'LanguageUtf8.php' );
 'talkpagetext'        => '<!-- MediaWiki:talkpagetext -->',
 'anontalkpagetext'    => '----\'\'Tämä on nimettömän käyttäjän keskustelusivu. Hän ei ole joko luonut itselleen käyttäjätunnusta tai ei käytä sitä. Siksi hänet tunnistetaan nyt numeerisella IP-osoitteella. Kyseinen IP-osoite voi olla useamman henkilön käytössä. Jos olet nimetön käyttäjä, ja sinusta tuntuu, että aiheettomia kommentteja on ohjattu sinulle, [[Special:Userlogin|luo itsellesi käyttäjätunnus tai kirjaudu sisään]] välttääksesi jatkossa sekaannukset muiden nimettömien käyttäjien kanssa.\'\'',
 'noarticletext'       => '<big>\'\'\'{{GRAMMAR:inessive|{{SITENAME}}}} ei ole tämän nimistä sivua.\'\'\'</big>
-* Voit kirjoittaa uuden sivun \'\'\'[http:{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} {{PAGENAME}}].\'\'\'
+* 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. Tallenna kaikki sivut ennen tyhjentämistä.<br />Koita seuraavia näppäinyhdistelmiä: \'\'\'Mozilla:\'\'\' \'\'ctrl-r\'\', \'\'\'IE ja Opera:\'\'\' \'\'ctrl-f5\'\', \'\'\'Safari:\'\'\' \'\'cmd-r\'\', \'\'\'Konqueror\'\'\' \'\'ctrl-r\'\'.',
+'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',
-'sectionedit'         => ' (lohko)',
-'commentedit'         => ' (kommentti)',
-'editingsection'      => 'Muokataan osiota $1',
+'editingsection'      => 'Muokataan osiota sivusta $1',
 'editingcomment'      => 'Muokataan kommenttia sivulla $1',
 'editconflict'        => 'Päällekkäinen muokkaus: $1',
 'explainconflict'     => 'Joku muu on muuttanut tätä sivua sen jälkeen, kun aloit muokata sitä. Ylempi tekstialue sisältää tämänhetkisen tekstin. Tekemäsi muutokset näkyvät alemmassa ikkunassa. Sinun täytyy yhdistää muutoksesi olemassa olevaan tekstiin. \'\'\'Vain\'\'\' ylemmässä alueessa oleva teksti tallentuu, kun tallennat sivun.',
 'yourtext'            => 'Oma tekstisi',
 'storedversion'       => 'Tallennettu versio',
 'nonunicodebrowser'   => '\'\'\'Varoitus: Selaimesi ei ole Unicode-yhteensopiva. Ole hyvä ja vaihda selainta, ennen kuin muokkaat sivua.\'\'\'',
-'editingold'          => '<center style="font-weight:bold">VAROITUS: Olet muokkaamassa vanhaa versiota tämän sivun tekstistä. Jos tallennat sen, kaikki tämän version jälkeen tehdyt muutokset katoavat.</center>', # TODO: NOWIKIMARKUP
+'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'     => 'VAROITUS: 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.',
+'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.',
 'protectedpagewarning'=> '<center><small>Tämä sivu on lukittu. Vain ylläpitäjät voivat muokata sitä.</small></center>',
 'templatesused'       => 'Tällä sivulla käytetyt mallineet:',
 
@@ -452,15 +495,17 @@ require_once( 'LanguageUtf8.php' );
 'currentrev'          => 'Nykyinen versio',
 'revisionasof'        => 'Versio $1',
 'revisionasofwithlink'=> 'Versio, joka luotiin $1.<br />$3 | $2 | $4',
-'previousrevision'    => '? Vanhempi versio',
-'nextrevision'        => 'Uudempi versio ?',
-'currentrevisionlink' => 'Näytä nykyinen versio',
+'previousrevision'    => ' Vanhempi versio',
+'nextrevision'        => 'Uudempi 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',
 
 # Diffs
 #
@@ -478,40 +523,42 @@ require_once( 'LanguageUtf8.php' );
 'searchresulttext'    => '<!-- -->',
 'searchquery'         => 'Haku termeillä $1',
 'badquery'            => 'Kelvoton hakumerkkijono',
-'badquerytext'        => 'Tekemääsi kyselyä ei ole kelvollinen. Tämä johtuu todennäköisesti siitä, että et ole määritellyt hakumerkkijonoa.',
+'badquerytext'        => 'Tekemäsi kysely ei ole kelvollinen. Tämä johtuu todennäköisesti siitä, että et ole määritellyt hakumerkkijonoa.',
 'matchtotals'         => 'Haulla \'\'\'$1\'\'\' löytyi $2 osumaa sivujen otsikoista ja $3 osumaa sivujen sisällöistä.',
-'nogomatch'           => '<big><strong>Täsmälleen tällä otsikolla ei ole sivua.</strong></big><br />Voit <strong><a href="$1" class="new">luoda aiheesta uuden sivun</a></strong> tai <a href="http:{{localurle:Project:Toiveet}}">lisätä sen toivottujen sivujen listaan</a>.<br /><small>Etsi ensin vastaavaa sivua, joka voi olla kirjoitusasultaan hieman erilainen</small><br /><br />', // TODO NO WIKIMARKUP
+'nogomatch'           => '<big>Täsmälleen tällä otsikolla ei ole sivua.</big>
+
+:Voit [[$1|luoda aiheesta uuden sivun]].
+:<small>Etsi ensin vastaavaa sivua, joka voi olla kirjoitusasultaan hieman erilainen</small>
+',
 'titlematches'        => 'Osumat sivujen otsikoissa',
 'notitlematches'      => 'Hakusanaa ei löytynyt minkään sivun otsikosta',
 'textmatches'         => 'Osumat sivujen teksteissä',
 'notextmatches'       => 'Hakusanaa ei löytynyt sivujen teksteistä',
-'prevn'               => '? $1 edellistä',
-'nextn'               => '$1 seuraavaa ?',
-'viewprevnext'        => 'Näytä [$3] kerralla.<br />$1 | $2',
+'prevn'               => ' $1 edellistä',
+'nextn'               => '$1 seuraavaa ',
+'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 />
-$2 Luettelo uudelleenohjauksista<br />Etsi $3 $9',
-'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>',
-'blanknamespace'      => '(Oletusnimiavaruus)',
+'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
 #
 'preferences'         => 'Asetukset',
 'prefsnologin'        => 'Et ole kirjautunut sisään',
-'prefsnologintext'    => 'Sinun täytyy [[Special:Userlogin|kirjautua sisään]], jotta voisit muuttaa asetuksia.', // TODO: NO WIKIMARKUP
+'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.',
-'qbsettings'          => 'Pikavalikon asetukset',
-'qbsettingsnote'      => 'Tämä asetus toimii ainostaan ulkoasutyyleillä <b>Perus</b> ja <b>Kölnin sininen</b>.',
+'prefsreset'          => 'Asetukset on palautettu tallennetuista asetuksistasi.',
+'qbsettings'          => 'Pikavalikko',
 'changepassword'      => 'Vaihda salasanaa',
 'skin'                => 'Ulkonäkö',
-'math'                => 'Matematiikan näyttäminen',
+'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',
@@ -522,32 +569,64 @@ $2 Luettelo uudelleenohjauksista<br />Etsi $3 $9',
 'math_bad_output'     => 'Matematiikan tulostehakemistoon kirjoittaminen tai tuedostonluonti ei onnistu',
 'math_notexvc'        => 'Texvc-sovellus puuttuu, lue math/READMEstä asennustietoja',
 'prefs-personal'      => 'Käyttäjätiedot',
-'prefs-rc'            => 'Tuoreet muutokset ja tynkien näyttö',
+'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',
-'textboxsize'         => 'Muokkauskenttä',
-'rows'                => 'Rivit',
-'columns'             => 'Sarakkeet',
-'searchresultshead'   => 'Hakutulosten asetukset',
-'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.',
+'resetprefs'          => 'Palauta tallennetut asetukset',
+'oldpassword'         => 'Vanha salasana:',
+'newpassword'         => 'Uusi salasana:',
+'retypenew'           => 'Uusi salasana uudelleen:',
+'textboxsize'         => 'Muokkaaminen',
+'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'  => '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',
+
+# User levels special page
+#
+
+# switching pan
+/*'groups-lookup-group' => 'Manage group rights',
+'groups-group-edit' => 'Existing groups: ',
+'editgroup' => 'Edit Group',
+'addgroup' => 'Add Group',*/
+
+'userrights-lookup-user'   => 'Käyttöoikeuksien hallinta',
+'userrights-user-editname' => 'Käyttäjätunnus: ',
+'editusergroup'            => 'Muokkaa käyttäjän ryhmiä',
+
+# user groups editing
+#
+'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-logcomment'      => 'Ryhmäoikeuden muutos ryhmistä ”$1” ryhmiin ”$2”',
+
+# Default group names and descriptions
+#
+'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-bot-name'        => 'Botit',
+'group-bot-desc'        => '',
 
 # Recent changes
 #
@@ -571,7 +650,9 @@ $2 Luettelo uudelleenohjauksista<br />Etsi $3 $9',
 'nchanges'            => '$1 muutosta',
 'minoreditletter'     => 'p',
 'newpageletter'       => 'U',
-'sectionlink'         => '?',
+'sectionlink'         => '→',
+'number_of_watching_users_RCview'   => '[$1]',
+'number_of_watching_users_pageview' => '[$1 tarkkailevaa käyttäjää]', // TODO sigplu
 
 # Upload
 #
@@ -580,17 +661,18 @@ $2 Luettelo uudelleenohjauksista<br />Etsi $3 $9',
 'uploadlink'          => 'Tallenna kuvia',
 'reupload'            => 'Uusi tallennus',
 'reuploaddesc'        => 'Paluu tallennuslomakkeelle.',
-'uploadnologin'       => 'Et ole kirjaunut sisään',
-'uploadnologintext'   => 'Sinun pitää olla [[Special:Userlogin|kirjautuneena sisään]], jotta voisit tallentaa tiedostoja.', // TODO NO WIKIMARKUP
+'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',
-'uploadtext'          => '\'\'\'SEIS!\'\'\' Ennen kuin tallennat tiedostoja {{GRAMMAR:illative|{{SITENAME}}}}, tutustu [[Project:Kuvien_käyttösäännöt|kuvien käyttösääntöihin]] ja noudata niitä.
-*\'\'Kirjoita kuvan tietoihin tarkka tieto kuvan lähteestä.\'\' Jos teit kuvan itse, sano se. Jos löysit kuvan Internetistä, laita mukaan linkki kyseiselle sivulle.
-*\'\'Kerro kuvan tekijänoikeuksien tila.\'\'
-*\'\'Käytä järkevää tiedostonimeä.\'\' Nimeä tiedostosi mieluummin tyyliin ”Eiffel-torni Pariisissa, yökuva.jpg” kuin ”etpan1024c.jpg”. Näin vältät mahdollisesti jo olemassa olevan kuvan korvaamisen omallasi. Voit etsiä olemassaolevia kuvia [[Special:Imagelist|kuvaluettelosta]].
+'uploadtext'          => '\'\'\'SEIS!\'\'\' Ennen kuin tallennat tiedostoja {{GRAMMAR:illative|{{SITENAME}}}}, tutustu [[Project:Tiedostojen tallennus|sääntöihin]] ja noudata niitä.
+*\'\'Kirjoita tiedoston tietoihin tarkka tieto tiedoston lähteestä.\'\' Jos teit tiedoston itse, sano se. Jos löysit tiedoston Internetistä, varmista, että sitä saa käyttää {{GRAMMAR:inessive|{{SITENAME}}}} laita mukaan linkki kyseiselle sivulle.
+*\'\'Kerro tiedoston tekijänoikeuksien tila.\'\'
+*\'\'Käytä järkevää tiedostonimeä.\'\' Nimeä tiedostosi mieluummin tyyliin ”Eiffel-torni Pariisissa, yökuva.jpg” kuin ”etpan1024c.jpg”. Näin vältät mahdollisesti jo olemassa olevan tiedoston korvaamisen omallasi. Voit etsiä aikaisemmin tallennettuja tiedostoja [[Special:Imagelist|tiedostoluettelosta]].
 *Laita johonkin aiheeseen liittyvään sivuun linkki kyseiseen tiedostoon, tai kirjoita kuvaussivulle kuvaus tiedoston sisällöstä.
-*Jos haluat nähdä tai etsiä aiemmin tallennettuja kuvia, katso [[Special:Imagelist|luetteloa tallennetuista kuvista]]. Tallennukset ja poistot kirjataan [[Special:Log/upload|tallennuslokiin]].
+*Jos haluat nähdä tai etsiä aiemmin tallennettuja tiedostoja, katso [[Special:Imagelist|tiedostoluettelo]]. Tallennukset ja poistot kirjataan [[Special:Log/upload|tallennuslokiin]].
 
-Suositellut kuvaformaatit ovat JPEG valokuville, PNG piirroksille ja kuvakkeille ja Ogg Vorbis äänille. Nimeä tiedostosi kuvaavasti välttääksesi sekaannuksia. Voit liittää kuvan sivulle käyttämällä seuraavan muotoista merkintää \'\'\'<nowiki>[[Kuva:tiedosto.jpg]]</nowiki>\'\'\' tai \'\'\'<nowiki>[[Kuva:tiedosto.png|kuvausteksti]]</nowiki>\'\'\' tai \'\'\'<nowiki>[[media:tiedosto.ogg]]</nowiki>\'\'\' äänille.
+Suositellut kuvaformaatit ovat JPEG valokuville, PNG piirroksille ja kuvakkeille ja Ogg Vorbis äänille. Voit liittää kuvan sivulle käyttämällä seuraavan muotoista merkintää \'\'\'<nowiki>[[Kuva:tiedosto.jpg]]</nowiki>\'\'\' tai \'\'\'<nowiki>[[Kuva:tiedosto.png|kuvausteksti]]</nowiki>\'\'\' tai \'\'\'<nowiki>[[media:tiedosto.ogg]]</nowiki>\'\'\' äänille.
 
 Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa tallentamasi tiedoston, jos he katsovat, että se ei palvele projektin tarpeita. Tallentamismahdollisuutesi voidaan estää, jos käytät järjestelmää väärin.',
 'uploadlog'           => 'Tallennusloki',
@@ -598,52 +680,76 @@ 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',
-'affirmation'         => 'Lupaan, että tämän tiedoston tekijänoikeuksien haltija sallii sen käytön {{GRAMMAR:inessive|{{SITENAME}}}}.', // TODO: has $1
 'copyrightpage'       => 'Project:Tekijänoikeudet',
 'copyrightpagename'   => '{{SITENAME}} ja tekijänoikeudet',
 'uploadedfiles'       => 'Tallennetut tiedostot',
-'noaffirmation'       => 'Vahvista, ettei lähettämäsi tiedosto riko tekijänoikeuksia.',
-'ignorewarning'       => 'Jätä tämä varoitus huomiotta, ja tallenna tiedosto.',
-'minlength'           => 'Kuvan nimessä pitää olla vähintään kolme merkkiä.',
+'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'         => 'Kuva on siirretty nimelle $1.',
+'badfilename'         => 'Tiedoston nimi vaihdettiin: $1.',
 'badfiletype'         => '".$1" ei ole suositeltava tiedostomuoto.',
-'largefile'           => 'Kuvien 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ä kuvaan 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: <tt>[[Kuva:$1|thumb|Kuvaus]]</tt>',
+'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]]', // TODO CHECK ME
-'uploaddisabled'      => 'Tiedostojen lähettäminen on poissa käytöstä.',
+'uploadedimage'       => 'tallensi tiedoston [[$1]]',
+'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'           => 'Luettelo kuvista',
-'imagelisttext'       => 'Alla on $1 kuvan luettelo lajiteltuna $2.',
-'getimagelist'        => 'noudetaan kuvaluettelo',
+'imagelist'           => 'Tiedostoluettelo',
+'imagelisttext'       => 'Alla on $1 tiedostoa lajiteltuna $2.',
+'getimagelist'        => 'noudetaan tiedostoluetteloa',
 'ilsubmit'            => 'Hae',
-'showlast'            => 'Näytä viimeiset $1 kuvaa lajiteltuna $2.',
+'showlast'            => 'Näytä viimeiset $1 tiedostoa lajiteltuna $2.',
 'byname'              => 'nimen mukaan',
 'bydate'              => 'päiväyksen mukaan',
 'bysize'              => 'koon mukaan',
 'imgdelete'           => 'poista',
 'imgdesc'             => 'kuvaus',
-'imglegend'           => 'Merkinnät: (kuvaus) = näytä/muokkaa kuvan kuvausta.',
-'imghistory'          => 'Kuvan historia',
+'imglegend'           => 'Merkinnät: (kuvaus) = näytä tai muokkaa tiedoston kuvausta.',
+'imghistory'          => 'Historia',
 'revertimg'           => 'palauta',
 'deleteimg'           => 'poista',
 'deleteimgcompletely' => 'poista',
-'imghistlegend'       => 'Merkinnät: (nyk.) = nykyinen kuva, (poista) = poista tämä vanha versio, (palauta) = palauta kuva tähän vanhaan versioon.<br />Napsauta päiväystä nähdäksesi silloin tallennettu kuva.',
-'imagelinks'          => 'Kuvalinkit',
-'linkstoimage'        => 'Seuraavilta sivuilta on linkki tähän kuvaan:',
-'nolinkstoimage'      => 'Tähän kuvaan ei ole linkkejä miltään sivulta.',
+'imghistlegend'       => 'Merkinnät: (nyk.) = nykyinen versio, (poista) = poista tämä vanha versio, (palauta) = palauta tiedosto tähän vanhaan versioon.<br />Napsauta päiväystä nähdäksesi silloin tallennettu tiedosto.',
+'imagelinks'          => 'Viittaukset sivuilta',
+'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 kuvan kuvaussivulta] lisätietoja.',
+'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
 #
@@ -659,11 +765,12 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'maintenance'         => 'Ylläpitosivu',
 'maintnancepagetext'  => 'Tämä sivu sisältää useita käteviä työkaluja jokapäiväistä ylläpitoa varten. Jotkut näistä toiminnoista kuormittavat tietokantaa, joten ole hyvä äläkä paina päivitysnappia jokaisessa kohdassa ;-)',
 'maintenancebacklink' => 'Takaisin ylläpitosivulle',
-'disambiguations'     => 'Tarkennussivu',
+'disambiguations'     => 'Linkit tarkennusivuihin',
 'disambiguationspage' => 'Project:Linkkejä_tarkennussivuihin',
 '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ä',
@@ -678,35 +785,32 @@ 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',
 'uncategorizedcategories' => 'Luokittelemattomat luokat',
-'unusedimages'        => 'Käyttämättömät kuvat',
+'unusedcategories'    => 'Käyttämättömät luokat',
+'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',
-'listadmins'          => 'Ylläpitäjälista',
 'specialpages'        => 'Toimintosivut',
 'spheading'           => 'Toimintosivut',
-
-/* Special page sections */
-'asksqlpheading'        => 'Tietokantakyselyt',
-'blockpheading'         => 'Esto',
-'createaccountpheading' => 'Tunnuksen luominen',
-'deletepheading'        => 'Sivujen poisto',
-'userrightspheading'    => 'Käyttöoikeudet',
-'grouprightspheading'   => 'Ryhmät', // TODO: Check me! (2005-03-17)
-'siteadminpheading'     => 'Sivuston ylläpito',
-
+'restrictedpheading'  => 'Rajoitetut toimintosivut',
 'protectpage'         => 'Suojaa sivu',
 'recentchangeslinked' => 'Linkitettyjen sivujen muutokset',
 'rclsub'              => 'Sivut, joihin linkki sivulta $1',
@@ -716,26 +820,34 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'intl'                => 'Kieltenväliset linkit',
 'move'                => 'Siirrä',
 'movethispage'        => 'Siirrä tämä sivu',
-'unusedimagestext'    => 'Huomaa, että muut verkkosivut saattavat viitata kuvaan suoran URL:n kautta, jolloin kuva saattaa olla tässä listassa, vaikka sitä käytetäänkin.',
+'unusedimagestext'    => 'Huomaa, että muut verkkosivut saattavat viitata tiedostoon suoran URL:n avulla, jolloin tiedosto saattaa olla tässä listassa, vaikka sitä käytetäänkin.',
+'unusedcategoriestext'=> 'Nämä luokat ovat olemassa, mutta niitä ei käytetä.',
 'booksources'         => 'Kirjalähteet',
 'categoriespagetext'  => '{{GRAMMAR:inessive|{{SITENAME}}}} on seuraavat luokat:',
 'data'                => 'Data', // TODO: CHECK ME
+'userrights'          => 'Käyttöoikeuksien hallinta',
+'groups'              => 'Ryhmät',
 'booksourcetext'      => 'Alla on lista linkeistä ulkopuolisiin sivustoihin, joilla myydään uusia ja käytettyjä kirjoja. Niillä voi myös olla lisätietoa kirjoista, joita etsit. {{SITENAME}} ei liity mitenkään näihin sivustoihin, eikä tätä listaa tule pitää suosituksena tai hyväksyntänä.',
 'isbn'                => 'ISBN',
+
 # 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.',
 
 # Special:Allpages
 'nextpage'            => 'Seuraava sivu ($1)',
+'allpagesfrom'        => 'Näytä sivuja lähtien sivusta:',
 'allarticles'         => 'Kaikki sivut',
+'allnonarticles'      => 'Kaikki sivut, jotka eivät ole oletusnimiavaruudessa',
+'allinnamespace'      => 'Kaikki sivut nimiavaruudessa $1',
+'allnotinnamespace'   => 'Kaikki sivut, jotka eivät ole nimiavaruudessa $1',
 'allpagesprev'        => 'Edellinen',
 'allpagesnext'        => 'Seuraava',
-'allinnamespace'   => 'Kaikki sivut nimiavaruudessa $1',
-'allpagessubmit'      => 'Mene',
+'allpagessubmit'      => 'Vaihda',
+'allpagesprefix'      => 'Näytä sivut, jotka alkavat merkkijonolla ',
 
 # Email this user
 #
@@ -745,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ä',
@@ -762,9 +874,9 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'watchlistsub'        => 'Käyttäjälle $1',
 'nowatchlist'         => 'Tarkkailulistallasi ei ole sivuja.',
 'watchnologin'        => 'Et ole kirjautunut sisään',
-'watchnologintext'    => 'Sinun pitää kirjautua sisään, jotta voisit käyttää tarkkailulistaa.', // TODO NO WIKIMARKUP
+'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',
@@ -772,8 +884,10 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'unwatch'             => 'Lopeta tarkkailu',
 'unwatchthispage'     => 'Lopeta tarkkailu',
 'notanarticle'        => 'Ei ole sivu',
-'watchnochange'       => 'Valittuna ajanajaksona yhtäkään tarkkailemistasi sivuista ei muokattu. ',
-'watchdetails'        => 'Keskustelusivuja mukaan laskematta tarkkailun alla on $1 sivua. <a href="$4">Muokkaa listaa</a>.',
+'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\'\'\'',
 'watchmethod-recent'  => 'tarkistetaan tuoreimpia muutoksia tarkkailluille sivuille',
 'watchmethod-list'    => 'tarkistetaan tarkkailtujen sivujen tuoreimmat muutokset',
 'removechecked'       => 'Poista valitut sivut tarkkailulistalta',
@@ -782,23 +896,59 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'removingchecked'     => 'Merkityt sivut poistettiin tarkkailulistalta.',
 'couldntremove'       => 'Sivua $1 ei voitu poistaa tarkkailulistalta',
 'iteminvalidname'     => 'Sivun $1 kanssa oli ongelmia! Sivun nimessä on vikaa.',
-'wlnote'              => 'Alla ovat $1 muutosta viimeisen <b>$2</b> tunnin ajalta.',
-'wlshowlast'          => 'Näytä viimeiset $1 tuntia $2 päivää $3',
+'wlnote'              => 'Alla on <b>$1</b> muutosta viimeisen <b>$2</b> tunnin ajalta.', // TODO NOWIKIMARKUP
+'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',
+
+'enotif_mailer'       => '{{GRAMMAR:genitive|{{SITENAME}}}} sivu on muuttunut -ilmoitus',
+'enotif_reset'        => 'Merkitse kaikki sivut katsotuiksi',
+'enotif_newpagetext'  => 'Tämä on uusi sivu.',
+'changed'             => 'muuttanut sivua',
+'created'             => 'luonut sivun',
+'enotif_subject'      => '$PAGEEDITOR on $CHANGEDORCREATED $PAGETITLE',
+'enotif_lastvisited'  => 'Osoitteessa $1 on kaikki muutokset viimeisen käyntisi jälkeen.',
+'enotif_body'         => 'Käyttäjä $WATCHINGUSERNAME,
+
+{{GRAMMAR:genitive|{{SITENAME}}}} käyttäjä $PAGEEDITOR on $CHANGEDORCREATED $PAGETITLE $PAGEEDITDATE. Nykyinen versio on osoitteessa $PAGETITLE_URL .
+
+$NEWPAGE
+
+Muokkaajan yhteenveto: $PAGESUMMARY $PAGEMINOREDIT
+
+Ota yhteyttä muokkaajaan:
+sähköposti: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.
+
+             {{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä
+
+--
+Tarkkailulistan asetuksia voit muuttaa osoitteessa:
+{{SERVER}}{{localurl:Special:Watchlist/edit}}
+
+Palaute ja lisäapu osoitteessa:
+{{SERVER}}{{localurl:Help:Sähköposti-ilmoitus}}',
+
 
 # Delete/protect/revert
 #
 'deletepage'          => 'Poista sivu',
-'confirm'             => 'Vahvista',
-'excontent'           => "sisälsi: '$1'",
-'exbeforeblank'       => "ennen tyhjentämistä sisälsi: '$1'",
+'confirm'             => 'Toteuta',
+'excontent'           => 'sisälsi: \'$1 \'',
+'excontentauthor'     => 'sisälsi: \'$1\' (ainoa muokkaaja oli $2)',
+'exbeforeblank'       => 'ennen tyhjentämistä sisälsi: \'$1\'',
 'exblank'             => 'oli tyhjä',
 'confirmdelete'       => 'Vahvista poisto',
 'deletesub'           => 'Sivun $1 poisto',
 'historywarning'      => 'Varoitus: Sivulla, jonka aiot poistaa on muokkaushistoria: ',
-'confirmdeletetext'   => 'Olet tuhomassa sivun tai kuvan ja kaiken sen historian tietokannasta pysyvästi. Vahvista, aiotko todella tehdä näin, ja että ymmärrät teon seuraukset ja että ymmärrät tekeväsi tämän {{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'         => '<b>$1</b> on poistettu. Katso $2 nähdäksesi tallenteen viimeaikaisista poistoista.', // TODO NO WIKIMARKUP
+'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.',
@@ -810,10 +960,10 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 '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',
@@ -829,38 +979,43 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'confirmunprotecttext'=> 'Haluatko varmasti poistaa tämän sivun suojauksen?',
 'confirmunprotect'    => 'Vahvista suojauksen poisto',
 'unprotectcomment'    => 'Syy suojauksen poistoon',
-'protectreason'       => 'Anna syy',
 
 # 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',
 
 # 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ä.',
@@ -869,27 +1024,33 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 # 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.',
-'ipaddress'           => 'IP-osoite tai käyttäjätunnus',
+'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.',
-'noblockreason'       => 'Sinun täytyy antaa syy estolle.',
 '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ä.',
@@ -898,6 +1059,10 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 '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',
+'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
 #
@@ -915,16 +1080,6 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'lockdbsuccesstext'   => 'Tietokanta on lukittu.<br />Muista vapauttaa tietokanta ylläpitotoimenpiteiden jälkeen.',
 'unlockdbsuccesstext' => 'Tietokanta on vapautettu.',
 
-# SQL query
-#
-'asksql'              => 'SQL-kysely',
-'asksqltext'          => 'Tämä ominaisuus ei ole käytössä',
-'sqlislogged'         => 'Panethan merkille, että kaikki kyselyt kirjataan ylös.',
-'sqlquery'            => 'Kirjoita kysely',
-'querybtn'            => 'Lähetä kysely',
-'selectonly'          => 'Vain {{GRAMMAR:genitive|{{SITENAME}}}} kehittäjät voivat tehdä muita kuin SELECT-hakuja.',
-'querysuccessful'     => 'Kysely onnistui',
-
 # Make sysop
 'makesysoptitle'      => 'Tee käyttäjästä ylläpitäjä',
 'makesysoptext'       => 'Byrokraatit voivat tällä lomakkeella tehdä käyttäjistä ylläpitäjiä ja byrokraatteja. Kirjoita laatikkoon sen käyttäjän nimi, jolle haluat antaa oikeuksia.',
@@ -933,45 +1088,29 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 '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',
-'bureaucratlog'       => 'Byrokraattilogi',
+'setstewardflag'      => 'Tee käyttäjästä ylivalvoja',
+'bureaucratlog'       => 'Byrokraattiloki',
 'rightslogtext'       => 'Alla on loki on käyttäjien käyttöoikeuksien muutoksista.',
-'bureaucratlogentry'  => 'antoi oikeudet käyttäjälle $1',
+'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.',
 'set_rights_fail'     => 'Käyttäjän <b>$1</b> oikeuksia ei voita asettaa. Kirjoititko nimen oikein?',
 'makesysop'           => 'Tee käyttäjästä ylläpitäjä',
+'already_sysop'       => 'Käyttäjä on jo ylläpitäjä',
+'already_bureaucrat'  => 'Käyttäjä on jo byrokraatti',
+'already_steward'     => 'Käyttäjä on jo ylivalvoja',
+
 
-//HOX Validation: missä näitä käytetään? -> http://meta.wikimedia.org/wiki/Article_validation
 # Validation
-'val_clear_old'       => 'Poista sivulle $1 aiemmin antamani validiointitiedot',
-'val_merge_old'       => 'Käytä aiempaa arviotani, kun en ole antanut mielipidettä',
-'val_form_note'       => '<b>Vinkki:</b> Tietojen säilytys tarkoittaa, että kaikkiin valitun version kohtiin, joihin <i>et ole antanut mielipidettä</i>, asetetaan  arvo ja kommentti vanhemmista versioista. Tiedot siirretään tuoreimmasta mielipiteen sisältävästä versiosta. Jos esimerkiksi uutta versiota validioidessasi haluat muuttaa mieltä yhdessä ainoassa kohdassa, aseta arvo vain siihen, jolloin muut kohdat säilyvät samoina kuin ennenkin.', // TODO: FIX ME
-'val_noop'            => 'ei mielipidettä',
-'val_percent'         => '<b>$1%</b><br />($2 / $3 pistettä<br /> $4 käyttäjältä)',
-'val_percent_single'  => '<b>$1%</b><br />($2 / $3 pistettä<br /> yhdeltä käyttäjältä)',
-'val_total'           => 'Yhteensä',
-'val_version'         => 'Versio',
-'val_tab'             => 'Validioi',
-'val_this_is_current_version' => 'tämä on tuorein versio',
-'val_version_of'      => 'Käyttäjän $1 versio', // TODO: CHECK ME
-'val_table_header'    => '<tr><th>luokka</th>$1<th colspan=4>mielipide</th>$1<th>kommentti</th></tr>\n',
-'val_stat_link_text'  => 'Tilastotietoa sivun validioinnista',
-'val_view_version'    => 'Katso tätä versiota',
-'val_validate_version'=> 'Validioi tämä versio',
-'val_user_validations'=> 'Käyttäjä on validioinut $1 sivua.',
-'val_no_anon_validation' => 'Vain sisään kirjautuneet käyttäjät voivat validioida sivuja.',
-'val_validate_article_namespace_only' => 'Vain sivuja voi validioida. Tämä sivu ei <i>ei</i> ole oletusnimiavaruudessa.',
-'val_validated'       => 'Validiointi on valmis.',
-'val_article_lists'   => 'Luettelo validioiduista sivuista',
-'val_page_validation_statistics' => 'Tilastotietoa $1:n sivujen validioinneista', // TODO: FIX ME
+# Let this mature a bit
 
 # Move page
 #
 'movepage'            => 'Siirrä sivu',
 'movepagetext'        => 'Alla olevalla lomakkeella voit nimetä uudelleen sivuja, jolloin niiden koko historia siirtyy uuden nimen alle. Vanhasta sivusta tulee uudelleenohjaussivu, joka osoittaa uuteen sivuun. Vanhaan sivuun suunnattuja linkkejä ei muuteta, muista tehdä tarkistukset kaksinkertaisten tai rikkinäisten uudellenohjausten varalta. Olet vastuussa siitä, että linkit osoittavat sinne, mihin niiden on tarkoituskin osoittaa.
 
-Huomaa, että sivua \'\'\'ei\'\'\' siirretä mikäli uusi otsikko on olemassaolevan sivun käytössä, paitsi milloin kyseessä on tyhjä sivu tai uudelleenohjaus, jolla ei ole muokkaushistoriaa. Tämä tarkoittaa sitä, että voit siirtää sivun takaisin vanhalle nimelleen mikäli teit virheen, mutta et voi kirjoittaa olemassa olevan sivun päälle. Jos on sivu tarvitsee siirtää olemassa olevan sivun päälle, ota yhteyttä [[Special:Listadmins|ylläpitäjään]].
+Huomaa, että sivua \'\'\'ei\'\'\' siirretä mikäli uusi otsikko on olemassaolevan sivun käytössä, paitsi milloin kyseessä on tyhjä sivu tai uudelleenohjaus, jolla ei ole muokkaushistoriaa. Tämä tarkoittaa sitä, että voit siirtää sivun takaisin vanhalle nimelleen mikäli teit virheen, mutta et voi kirjoittaa olemassa olevan sivun päälle. Jos sivu tarvitsee siirtää olemassa olevan sivun päälle, ota yhteyttä [[Special:Listusers|ylläpitäjään]].
 
 \'\'\'HUOMIO!\'\'\'
 Saatat olla tekemässä huomattavaa ja odottamatonta muutosta suositulle sivulle. Ole varma, että ymmärrät seuraukset ennen kuin jatkat.',
@@ -993,9 +1132,18 @@ Näissä tapauksissa sivut täytyy siirtää tai yhdistää käsin.',
 'movedto'             => 'Siirretty uudelle otsikolle',
 'movetalk'            => 'Siirrä myös keskustelusivu, jos mahdollista.',
 'talkpagemoved'       => 'Myös sivun keskustelusivu siirrettiin.',
-'talkpagenotmoved'    => 'Sivun keskustelusivua <b>ei</b> siirretty.', // TODO: NO WIKIMARKUP
-'1movedto2'           => '$1 siirretty sivulle $2',
-'1movedto2_redir'     => '$1 siirretty edelleenohjauksen päälle sivulle $2',
+'talkpagenotmoved'    => 'Sivun keskustelusivua \'\'\'ei\'\'\' siirretty.',
+'1movedto2'           => 'siirsi sivun $1 uudelle nimelle $2',
+'1movedto2_redir'     => 'siirsi sivun $1 uudelleenohjauksen $2 päälle',
+'movelogpage'         => 'Siirtoloki',
+'movelogpagetext'     => 'Anna on loki siirretyistä sivuista.',
+'movereason'          => 'Syy',
+'revertmove'          => 'kumoa',
+'delete_and_move'     => 'Poista kohdesivu ja siirrä',
+'delete_and_move_text'   => 'Kohdesivu [[$1]] on jo olemassa. Haluatko poistaa sen, jotta nykyinen sivu voitaisiin siirtää?',
+'delete_and_move_reason' => 'Sivu on siirron tiellä.',
+'selfmove'            => 'Lähde- ja kohdenimi ovat samat.',
+'immobile_namespace'  => 'Sivuja ei voi siirtää tähän nimiavaruuteen.',
 
 # Export
 
@@ -1004,17 +1152,16 @@ 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
 
 'allmessages'         => 'Kaikki järjestelmäviestit',
-/* CVS only 2005-03-17*/
 'allmessagesname'     => 'Nimi',
 'allmessagesdefault'  => 'Oletusarvo',
 'allmessagescurrent'  => 'Nykyinen arvo',
-'allmessagestext'     => 'Tämä on luettelo kaikista MediaWiki-nimiavaruudesta olevista viesteistä.',
+'allmessagestext'     => 'Tämä on luettelo kaikista MediaWiki-nimiavaruudessa olevista viesteistä.',
 'allmessagesnotsupportedUI' => 'Special:Allmessages-sivu ei tue täällä käyttöliittymäkieltäsi <b>$1</b>.',
 'allmessagesnotsupportedDB' => 'Special:AllMessages-sivu ei ole käytössä, koska wgUseDatabaseMessages-asetus on pois päältä.',
 
@@ -1025,12 +1172,17 @@ Jälkimmäisessä tapauksessa voit myös käyttää linkkiä. Esimerkiksi [[Juna
 'filemissing'         => 'Tiedosto puuttuu',
 
 # Special:Import
-'import'            => 'Tuo sivuja',
-'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ä.',
+'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',
@@ -1076,7 +1228,7 @@ Jälkimmäisessä tapauksessa voit myös käyttää linkkiä. Esimerkiksi [[Juna
 'categoryarticlecount'=> 'Tässä luokassa on $1 sivua.',
 'categoryarticlecount1' => 'Tässä luokassa on yksi sivu.',
 'usenewcategorypage'  => '1\n\nLaita ensimmäiseksi merkiksi nolla, kun et halua käyttää uutta luokittelutyyliä.',
-'listingcontinuesabbrev' => 'jatk.',
+'listingcontinuesabbrev' => ' jatkuu',
 
 # Info page
 'infosubtitle'        => 'Tietoja sivusta',
@@ -1087,22 +1239,23 @@ Jälkimmäisessä tapauksessa voit myös käyttää linkkiä. Esimerkiksi [[Juna
 'numtalkauthors'      => 'Keskustelusivun erillisten kirjoittajien määrä: $1',
 
 # Math options
-  'mw_math_png'       => 'Näytä aina PNG:nä',
-  'mw_math_simple'    => 'Näytä HTML:nä, jos yksinkertainen, muuten PNG:nä',
-  'mw_math_html'      => 'Näytä HTML:nä, jos mahdollista, muuten PNG:nä',
-  'mw_math_source'    => 'Näytä TeX-muodossa (tekstiselaimille)',
-  'mw_math_modern'    => 'Suositus nykyselaimille',
-  'mw_math_mathml'    => 'Näytä MathML:nä jos mahdollista (kokeellinen)',
-
-// HOX
+'mw_math_png'         => 'Näytä aina PNG:nä',
+'mw_math_simple'      => 'Näytä HTML:nä, jos yksinkertainen, muuten PNG:nä',
+'mw_math_html'        => 'Näytä HTML:nä, jos mahdollista, muuten PNG:nä',
+'mw_math_source'      => 'Näytä TeX-muodossa (tekstiselaimille)',
+'mw_math_modern'      => 'Suositus nykyselaimille',
+'mw_math_mathml'      => 'Näytä MathML:nä jos mahdollista (kokeellinen)',
+
 # Patrolling
 'markaspatrolleddiff'   => 'Merkitse tarkastetuksi',
 'markaspatrolledlink'   => '[$1]',
-'markaspatrolledtext'   => 'Merkitse sivu tarkastetuksi',
+'markaspatrolledtext'   => 'Merkitse muokkaus tarkastetuksi',
 'markedaspatrolled'     => 'Tarkastettu',
 'markedaspatrolledtext' => 'Valittu versio on tarkastettu.',
-'rcpatroldisabled'      => 'Tuoreiden muutosten tarkastus on pois käytöstä',
-'rcpatroldisabledtext'  => 'Tuoreiden muutosten tarkastustoiminto on toistaiseksi pois käytöstä.',
+'rcpatroldisabled'      => 'Tuoreiden muutosten tarkastustoiminto ei ole käytössä',
+'rcpatroldisabledtext'  => 'Tuoreiden muutosten tarkastustoiminto ei ole käytössä.',
+
+'Monobook.css' => "/* Tätä sivua muokkaamalla voi muokata koko sivuston Monobook-tyyliä */",
 
 # Monobook.js: tooltips and access keys for monobook
 'Monobook.js' => "/* <pre> */
@@ -1117,16 +1270,15 @@ ta['pt-mycontris'] = new Array('y','Lista omista muokkauksista');
 ta['pt-login'] = new Array('o','Kirjaudu sisään tai luo tunnus');
 ta['pt-anonlogin'] = new Array('o','Kirjaudu sisään tai luo tunnus');
 ta['pt-logout'] = new Array('o','Kirjaudu ulos');
-ta['ca-talk'] = new Array('t','Keskustelua sisällöstä');
+ta['ca-talk'] = new Array('t','Keskustele sisällöstä');
 ta['ca-edit'] = new Array('e','Muokkaa tätä sivua');
 ta['ca-addsection'] = new Array('+','Lisää kommentti tälle sivulle');
 ta['ca-viewsource'] = new Array('e','Näytä sivun lähdekoodi');
-ta['ca-history'] = new Array('h','Aikaisemmat versiot tästä sivusta');
+ta['ca-history'] = new Array('h','Sivun aikaisemmat versiot');
 ta['ca-protect'] = new Array('=','Suojaa tämä sivu');
 ta['ca-delete'] = new Array('d','Poista tämä sivu');
 ta['ca-undelete'] = new Array('d','Palauta tämä sivu');
 ta['ca-move'] = new Array('m','Siirrä tämä sivu');
-ta['ca-nomove'] = new Array('','Sinulla ei ole oikeuksia siirtää tätä sivua');
 ta['ca-watch'] = new Array('w','Lisää tämä sivu tarkkailulistallesi');
 ta['ca-unwatch'] = new Array('w','Poista tämä sivu tarkkailulistaltasi');
 ta['search'] = new Array('f','Etsi sivu');
@@ -1146,12 +1298,14 @@ 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');
 ta['ca-nstab-special'] = new Array('','Tämä on toimintosivu');
-ta['ca-nstab-wp'] = new Array('a','Näytä projektisivu');
-ta['ca-nstab-image'] = new Array('c','Näytä kuvasivu');
+ta['ca-nstab-wp'] = new Array('c','Näytä projektisivu');
+ta['ca-nstab-image'] = new Array('c','Näytä tiedostosivu');
 ta['ca-nstab-mediawiki'] = new Array('c','Näytä järjestelmäviesti');
 ta['ca-nstab-template'] = new Array('c','Näytä malline');
 ta['ca-nstab-help'] = new Array('c','Näytä ohjesivu');
@@ -1165,166 +1319,613 @@ ta['ca-nstab-category'] = new Array('c','Näytä luokkasivu');
 'previousdiff'        => '← Edellinen muutos',
 'nextdiff'            => 'Seuraava muutos →',
 
-'imagemaxsize'        => 'Rajoita kuvien kokoa kuvien kuvaussivuilla arvoon: ',
+'imagemaxsize'        => 'Rajoita kuvien koko kuvien kuvaussivuilla arvoon ',
+'thumbsize'           => 'Pikkukuvien koko: ',
 'showbigimage'        => 'Lataa korkeatarkkuuksinen versio ($1×$2, $3 KiB)',
 
-'newimages'           => 'Galleria uusista kuvista',
+'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ää 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',
+'namespacesall'       => 'kaikki',
+
+# E-mail address confirmation
+'confirmemail'        => 'Varmenna sähköpostiosoite',
+'confirmemail_text'   => 'Tämä wiki vaatii sähköpostiosoitteen varmentamisen, ennen kuin voit käyttää sähköpostitoimintoja. Lähetä alla olevasta painikkeesta varmennusviesti osoitteeseesi. Viesti sisältää linkin, jonka avaamalla varmennat sähköpostiosoitteesi.',
+'confirmemail_send'   => 'Lähetä varmennusviesti',
+'confirmemail_sent'   => 'Varmennusviesi lähetetty.',
+'confirmemail_sendfailed' => 'Varmennusviestin lähettäminen epäonnistui. Tarkista, onko osoitteessa kiellettyjä merkkejä.',
+'confirmemail_invalid'    => 'Varmennuskoodi ei kelpaa. Koodi on voinut vanhentua.',
+'confirmemail_success'    => 'Sähköpostiosoitteesi on nyt varmennettu. Voit kirjautua sisään.',
+'confirmemail_loggedin'   => 'Sähköpostiosoitteesti on nyt varmennettu.',
+'confirmemail_error'  => 'Jokin epäonnistui varmennnuksen tallentamisessa.',
+'confirmemail_subject'=> '{{GRAMMAR:genitive|{{SITENAME}}}} sähköpostiosoitteen varmennus',
+'confirmemail_body'   => 'Joku IP-osoitteesta $1 on rekisteröinyt {{GRAMMAR:inessive|{{SITENAME}}}} tunnuksen $2 tällä sähköpostiosoitteella.
+
+Varmenna, että tämä tunnus kuuluu sinulle avamaalla seuraava linkki selaimellasi:
+
+$3
+
+Jos tämä tunnus ei ole sinun, ÄLÄ seuraa linkkiä. Varmennuskoodi vanhenee $4.
+',
+
+
+# Inputbox extension, may be useful in other contexts as well
+'tryexact'            => 'Koita tarkkaa osumaa',
+'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 getNsIndex( $text ) {
-    global $wgNamespaceNamesFi;
-
-    foreach ( $wgNamespaceNamesFi as $i => $n ) {
-      if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
-    }
-    return false;
-  }
-
-  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 );
-    }
-  }
-  
-  var $digitTransTable = array(
-    ',' => '&nbsp;',
-    '.' => ','
-  );
-  
-  function formatNum( $number ) {
-    return strtr($number, $this->digitTransTable );
-  }
-
-  # 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.
-    # TODO: in the future add better version. (Nikerabbit)
-    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>';
+       }
 }
 
 ?>