hardcoded "encyclopedia"
[lhc/web/wiklou.git] / languages / LanguageFi.php
index 143bbe2..e8aeac3 100644 (file)
@@ -7,46 +7,54 @@
 
 require_once( 'LanguageUtf8.php' );
 
-# Revised 2005-06-22 for MediaWiki 1.5a2 and CVS -- Nikerabbit
+# Revised 2005-08-25 for MediaWiki 1.6alpha -- Nikerabbit
 
 /* private */ $wgNamespaceNamesFi = array(
-  NS_MEDIA            => 'Media',
-  NS_SPECIAL          => 'Toiminnot',
-  NS_MAIN             => '',
-  NS_TALK             => 'Keskustelu',
-  NS_USER             => 'Käyttäjä',
-  NS_USER_TALK        => 'Keskustelu_käyttäjästä',
-  NS_PROJECT          => $wgMetaNamespace,
-  NS_PROJECT_TALK     => FALSE,  # Set in constructor
-  NS_IMAGE            => 'Kuva',
-  NS_IMAGE_TALK       => 'Keskustelu_kuvasta',
-  NS_MEDIAWIKI        => 'MediaWiki',
-  NS_MEDIAWIKI_TALK   => 'MediaWiki_talk',
-  NS_TEMPLATE         => 'Malline',
-  NS_TEMPLATE_TALK    => 'Keskustelu_mallineesta',
-  NS_HELP             => 'Ohje',
-  NS_HELP_TALK        => 'Keskustelu_ohjeesta',
-  NS_CATEGORY         => 'Luokka',
-  NS_CATEGORY_TALK    => 'Keskustelu_luokasta'
+       NS_MEDIA            => 'Media',
+       NS_SPECIAL          => 'Toiminnot',
+       NS_MAIN             => '',
+       NS_TALK             => 'Keskustelu',
+       NS_USER             => 'Käyttäjä',
+       NS_USER_TALK        => 'Keskustelu_käyttäjästä',
+       NS_PROJECT          => $wgMetaNamespace,
+       NS_PROJECT_TALK     => FALSE,  # Set in constructor
+       NS_IMAGE            => 'Kuva',
+       NS_IMAGE_TALK       => 'Keskustelu_kuvasta',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_talk',
+       NS_TEMPLATE         => 'Malline',
+       NS_TEMPLATE_TALK    => 'Keskustelu_mallineesta',
+       NS_HELP             => 'Ohje',
+       NS_HELP_TALK        => 'Keskustelu_ohjeesta',
+       NS_CATEGORY         => 'Luokka',
+       NS_CATEGORY_TALK    => 'Keskustelu_luokasta'
 
 ) + $wgNamespaceNamesEn;
 
 /* private */ $wgQuickbarSettingsFi = array(
-  'Ei mitään', 'Tekstin mukana, vasen', 'Tekstin mukana, oikea', 'Pysyen vasemmalla'
+       'Ei mitään', 'Tekstin mukana, vasen', 'Tekstin mukana, oikea', 'Pysyen vasemmalla'
 );
 
 /* private */ $wgSkinNamesFi = array(
-  'standard'          => 'Perus',
-  'cologneblue'       => 'Kölnin sininen',
-  'myskin'            => 'Oma tyylisivu'
+       'standard'          => 'Perus',
+       'cologneblue'       => 'Kölnin sininen',
+       'myskin'            => 'Oma tyylisivu'
 ) + $wgSkinNamesEn;
 
+/* private */ $wgDateFormatsFi = array(
+       'Ei valintaa',
+       '15. tammikuuta 2001 kello 16.12',
+       '15. tammikuuta 2001 kello 16:12:34',
+       '15.1.2001 16.12',
+       'ISO 8601' => '2001-01-15 16:12:34'
+);
+
 /* private */ $wgBookstoreListFi = array(
-  'Akateeminen kirjakauppa'       => 'http://www.akateeminen.com/search/tuotetieto.asp?tuotenro=$1',
-  'Bookplus'                      => 'http://www.bookplus.fi/product.php?isbn=$1',
-  'Helsingin yliopiston kirjasto' => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1&submit=Hae&engine_helka=ON',
-  'Pääkaupunkiseudun kirjastot'   => 'http://www.helmet.fi/search*fin/i?SEARCH=$1',
-  'Tampereen seudun kirjastot'    => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1-1&lang=kaikki&mat_type=kaikki&submit=Hae&engine_tampere=ON'
+       'Akateeminen kirjakauppa'       => 'http://www.akateeminen.com/search/tuotetieto.asp?tuotenro=$1',
+       'Bookplus'                      => 'http://www.bookplus.fi/product.php?isbn=$1',
+       'Helsingin yliopiston kirjasto' => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1&submit=Hae&engine_helka=ON',
+       'Pääkaupunkiseudun kirjastot'   => 'http://www.helmet.fi/search*fin/i?SEARCH=$1',
+       'Tampereen seudun kirjastot'    => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1-1&lang=kaikki&mat_type=kaikki&submit=Hae&engine_tampere=ON'
 ) + $wgBookstoreListEn;
 
 # Current practices (may be changed if not good ones)
@@ -64,7 +72,7 @@ require_once( 'LanguageUtf8.php' );
 
 # 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-highlightbroken' => 'Näytä linkit puuttuville sivuille <a href="" class="new">näin</a> (vaihtoehtoisesti näin: <a href="" class="internal">?</a>).',
 'tog-justify'         => 'Tasaa kappaleet',
 'tog-hideminor'       => 'Piilota pienet muutokset tuoreet muutokset -listasta',
 'tog-usenewrc'        => 'Kehittynyt tuoreet muutokset -listaus (JavaScript)',
@@ -94,6 +102,8 @@ require_once( 'LanguageUtf8.php' );
 'underline-never'     => 'Ei koskaan',
 'underline-default'   => 'Selaimen oletustapa',
 
+'skinpreview'         => '(Esikatsele...)',
+
 # dates
 'sunday'      => 'sunnuntai',
 'monday'      => 'maanantai',
@@ -114,18 +124,18 @@ 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:
 #
@@ -145,7 +155,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
@@ -183,8 +192,10 @@ require_once( 'LanguageUtf8.php' );
 'go'                  => 'Siirry',
 'history'             => 'Historia',
 'history_short'       => 'Historia',
+'updatedmarker'       => 'päivitetty viimeisimmän käyntisi jälkeen',
 'info_short'          => 'Tiedostus',
 'printableversion'    => 'Tulostettava versio',
+'permalink'           => 'Ikilinkki',
 'edit'                => 'Muokkaa',
 'editthispage'        => 'Muokkaa tätä sivua',
 'delete'              => 'Poista',
@@ -243,6 +254,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
@@ -317,7 +330,7 @@ Sivun lähdekoodi:',
 'yourdomainname'      => 'Verkkonimi',
 'externaldberror'     => 'Tapahtui virhe ulkoisen autentikointitietokannan käytössä tai sinulla ei ole lupaa päivittää tunnustasi.',
 'loginproblem'        => '<b>Sisäänkirjautuminen ei onnistunut.</b><br />Yritä uudelleen!',
-'alreadyloggedin'     => '<font color=red><b>Käyttäjä $1, olet jo kirjautunut sisään!</b></font><br />\n',
+'alreadyloggedin'     => '<strong>Käyttäjä $1, olet jo kirjautunut sisään!</strong><br />\n',
 'login'               => 'Kirjaudu sisään',
 'loginprompt'         => '<!-- -->',
 'userlogin'           => 'Kirjaudu sisään tai luo tunnus',
@@ -328,17 +341,17 @@ Sivun lähdekoodi:',
 'createaccountmail'   => 'sähköpostitse',
 'badretype'           => 'Syöttämäsi salasanat ovat erilaiset.',
 'userexists'          => 'Pyytämäsi käyttäjänimi on jo käytössä. Ole hyvä ja valitse toinen käyttäjänimi.',
-'youremail'           => 'Sähköpostiosoite²',
-'yourrealname'        => 'Nimi¹',
+'youremail'           => 'Sähköpostiosoite',
+'yourrealname'        => 'Nimi',
 'yourlanguage'        => 'Käyttöliittymän kieli',
 'yourvariant'         => 'Kielivariantti', // TODO: CHECK ME (language varian)
 'yournick'            => 'Nimimerkki allekirjoituksia varten',
 'email'               => 'Sähköpostitoiminnot',
 'emailforlost'        => '&nbsp;',
 'prefs-help-email-enotif' => 'Tätä osoitetta käytetään myös artikkelien muuttumisilmoituksiin, jos ominaisuus on käytössä.',
-'prefs-help-realname' => '¹ Nimi (vapaaehtoinen): Nimeäsi käytetään antaamaan kunnia työllesi.',
+'prefs-help-realname' => 'Nimi (vapaaehtoinen): Nimeäsi käytetään antaamaan kunnia työllesi.',
 'loginerror'          => 'Sisäänkirjautumisvirhe',
-'prefs-help-email'    => '² Sähköpostiosoite (vapaaehtoinen): Muut käyttäjät voivat ottaa sinuun yhteyttä sähköpostilla ilman, että osoitteesi paljastuu.',
+'prefs-help-email'    => 'Sähköpostiosoite (vapaaehtoinen): Muut käyttäjät voivat ottaa sinuun yhteyttä sähköpostilla ilman, että osoitteesi paljastuu.',
 
 'nocookiesnew'        => 'Käyttäjä luotiin, mutta et ole kirjautunut sisään. {{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeistä. Kytke ne päälle, ja sitten kirjaudu sisään juuri luomallasi käyttäjänimellä ja salasanalla.',
 'nocookieslogin'      => '{{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeitä. Ota ne käyttöön, ja yritä uudelleen.',
@@ -420,7 +433,8 @@ Sivun lähdekoodi:',
 'whitelistacctitle'   => 'Sinun ei ole sallittu luoda tunnusta',
 'whitelistacctext'    => 'Saadaksesi oikeudet luoda tunnus sinun täytyy kirjautua [[Special:Userlogin|sisään]] ja sinulla tulee olla asiaankuuluvat oikeudet.',
 'loginreqtitle'       => 'Sisäänkirjautuminen vaaditaan',
-'loginreqtext'        => 'Sinun täytyy [[Special:Userlogin|kirjautua sisään]], jotta voisit nähdä muut sivut.',
+'loginreqlink'        => 'kirjautua sisään',
+'loginreqpagetext'    => 'Sinun täytyy $1, jotta voisit nähdä muut sivut.',
 
 'accmailtitle'        => 'Salasana lähetetty.',
 'accmailtext'         => 'käyttäjän \'\'\'$1\'\'\' salasana on lähetetty osoitteeseen \'\'\'$2\'\'\'.',
@@ -431,7 +445,7 @@ Sivun lähdekoodi:',
 'noarticletext'       => '<big>\'\'\'{{GRAMMAR:inessive|{{SITENAME}}}} ei ole tämän nimistä sivua.\'\'\'</big>
 * Voit kirjoittaa uuden sivun \'\'\'<span class="plainlinks">[{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} {{PAGENAME}}]</span>.\'\'\'
 * Jos olet luonut sivun tällä nimellä, se on saatettu poistaa — katso [[Special:Log/delete|poistoloki]].',
-'clearyourcache'      => '\'\'\'Huomautus:\'\'\' Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan: \'\'\'Mozilla, Konqueror ja Safari:\'\'\' napsauta shift-näppäin pohjassa päivitä tai  paina \'\'shift-ctrl-r\'\', \'\'\'IE:\'\'\' \'\'ctrl-f5\'\' tai  \'\'\'Opera:\'\'\' \'\'F5\'\'.',
+'clearyourcache'      => '\'\'\'Huomautus:\'\'\' Selaimen välimuisti pitää ehkä tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan: \'\'\'Mozilla, Firefox ja Safari:\'\'\' napsauta shift-näppäin pohjassa päivitä tai  paina \'\'shift-ctrl-r\'\' / \'\'shift-cmd-r\'\', \'\'\'IE:\'\'\' \'\'ctrl-f5\'\' tai \'\'\'Konqueror:\'\'\' \'\'F5\'\'.',
 'usercssjsyoucanpreview' => '\'\'\'Vinkki:\'\'\' Käytä esikatselupainiketta testataksesi uutta CSS:ää tai JavaScriptiä ennen tallennusta.',
 'usercsspreview'      => '\'\'\'Tämä on vasta CSS:n testaus ja esikatselu.\'\'\'',
 'userjspreview'       => '\'\'\'Tämä on vasta JavaScriptin testaus ja esikatselu.\'\'\'',
@@ -449,7 +463,7 @@ Sivun lähdekoodi:',
 'nonunicodebrowser'   => '\'\'\'Varoitus: Selaimesi ei ole Unicode-yhteensopiva. Ole hyvä ja vaihda selainta, ennen kuin muokkaat sivua.\'\'\'',
 'editingold'          => '<center><strong>Varoitus</strong>: Olet muokkaamassa vanhaa versiota tämän sivun tekstistä. Jos tallennat sen, kaikki tämän version jälkeen tehdyt muutokset katoavat.</center>',
 'yourdiff'            => 'Eroavaisuudet',
-'copyrightwarning'    => '<strong>Muutoksesi astuvat voimaan välittömästi.</strong> Jos haluat harjoitella muokkaamista, ole hyvä ja käytä [[Project:Hiekkalaatikko|hiekkalaatikkoa]].<br/><br/>Kaikki {{GRAMMAR:illative|{{SITENAME}}}} tehtävät tuotokset katsotaan julkaistuksi GNU Free Documentation -lisenssin mukaisesti ([[Project:{{SITENAME}} ja tekijänoikeudet|lisätietoja]]). Jos et halua, että kirjoitustasi muokataan armottomasti ja uudelleenkäytetään vapaasti, älä tallenna kirjoitustasi. Tallentamalla muutoksesi lupaat, että kirjoitit tekstisi itse, tai kopioit sen jostain vapaasta lähteestä. <strong>ÄLÄ KÄYTÄ TEKIJÄNOIKEUDEN ALAISTA MATERIAALIA ILMAN LUPAA!</strong>',
+'copyrightwarning'    => '<strong>Muutoksesi astuvat voimaan välittömästi.</strong> Jos haluat harjoitella muokkaamista, ole hyvä ja käytä [[Project:Hiekkalaatikko|hiekkalaatikkoa]].<br /><br />Kaikki {{GRAMMAR:illative|{{SITENAME}}}} tehtävät tuotokset katsotaan julkaistuksi GNU Free Documentation -lisenssin mukaisesti ([[Project:{{SITENAME}} ja tekijänoikeudet|lisätietoja]]). Jos et halua, että kirjoitustasi muokataan armottomasti ja uudelleenkäytetään vapaasti, älä tallenna kirjoitustasi. Tallentamalla muutoksesi lupaat, että kirjoitit tekstisi itse, tai kopioit sen jostain vapaasta lähteestä. <strong>ÄLÄ KÄYTÄ TEKIJÄNOIKEUDEN ALAISTA MATERIAALIA ILMAN LUPAA!</strong>',
 'copyrightwarning2'   => '<br />Huomaa, että kuka tahansa voi muokata, muuttaa ja poistaa kaikkia sivustolle tekemiäsi lisäyksiä ja muutoksia. Muokkaamalla sivustoa luovutat sivuston käyttäjille tämän oikeuden ja takaat, että lisäämäsi aineisto on joko itse kirjoittamaasi tai peräisin jostain vapaasta lähteestä. <strong>TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!</strong>',
 'longpagewarning'     => '<center>Tämän sivun tekstiosuus on $1 binäärikilotavua pitkä. Harkitse, voisiko sivun jakaa pienempiin osiin.</center>',
 'readonlywarning'     => '<strong>Varoitus</strong>: Tietokanta on lukittu huoltoa varten, joten voi olla ettet pysty tallentamaan muokkauksiasi juuri nyt. Saattaa olla paras leikata ja liimata tekstisi omaan tekstitiedostoosi ja tallentaa se tänne myöhemmin.',
@@ -473,7 +487,7 @@ Sivun lähdekoodi:',
 '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',
@@ -514,6 +528,7 @@ Sivun lähdekoodi:',
 'powersearch'         => 'Etsi',
 'powersearchtext'     => 'Haku nimiavaruuksista:<br />$1<br /><b>Etsi</b> $3 $9 $2 Luettele uudelleenohjaukset', # TODO NOWIKIMARKUP
 'searchdisabled'      => '<p style="margin: 1.5em 2em 1em">Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön.<small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small></p>', # TODO NOWIKIMARKUP
+
 'blanknamespace'      => '(sivut)',
 
 # Preferences page
@@ -522,7 +537,7 @@ Sivun lähdekoodi:',
 'prefsnologin'        => 'Et ole kirjautunut sisään',
 'prefsnologintext'    => 'Sinun täytyy [[Special:Userlogin|kirjautua sisään]], jotta voisit muuttaa asetuksia.',
 'prefslogintext'      => 'Olet kirjautunut sisään käyttäjänä \'\'\'$1\'\'\'. Sisäinen tunnistenumerosi on \'\'\'$2\'\'\'.',
-'prefsreset'          => 'Asetukset on palautettu talletettujen mukaisiksi.',
+'prefsreset'          => 'Asetukset on palautettu tallennetuista asetuksistasi.',
 'qbsettings'          => 'Pikavalikko',
 'changepassword'      => 'Vaihda salasanaa',
 'skin'                => 'Ulkonäkö',
@@ -541,7 +556,7 @@ Sivun lähdekoodi:',
 'prefs-rc'            => 'Tuoreet muutokset ja tyngät',
 'prefs-misc'          => 'Muut asetukset',
 'saveprefs'           => 'Tallenna asetukset',
-'resetprefs'          => 'Palauta alkuperäiset asetukset',
+'resetprefs'          => 'Palauta tallennetut asetukset',
 'oldpassword'         => 'Vanha salasana',
 'newpassword'         => 'Uusi salasana',
 'retypenew'           => 'Uusi salasana uudelleen',
@@ -553,8 +568,8 @@ Sivun lähdekoodi:',
 '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.',
+'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',
@@ -570,10 +585,10 @@ Sivun lähdekoodi:',
 #
 
 # switching pan
-'groups-lookup-group' => 'Manage group rights',
+/*'groups-lookup-group' => 'Manage group rights',
 'groups-group-edit' => 'Existing groups: ',
 'editgroup' => 'Edit Group',
-'addgroup' => 'Add Group',
+'addgroup' => 'Add Group',*/
 
 'userrights-lookup-user'   => 'Käyttöoikeuksien hallinta',
 'userrights-user-editname' => 'Käyttäjätunnus: ',
@@ -588,17 +603,13 @@ Sivun lähdekoodi:',
 '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.',
 
 # Default group names and descriptions
-# 
-'group-anon-name'       => 'Anonyymi',
-'group-anon-desc'       => 'Käyttäjät, joilla ei ole tunnusta tai jotka eivät ole kirjautuneet sisään',
-'group-loggedin-name'   => 'Käyttäjä',
-'group-loggedin-desc'   => 'Käyttäjät, jotka ovat kirjautuneet sisään',
-'group-admin-name'      => 'Ylläpitäjä',
-'group-admin-desc'      => 'Luotetut käyttäjät voivat estää käyttäjiä ja poistaa ja suojata artikkeleita',
-'group-bureaucrat-name' => 'Byrokraatti',
+#
+'group-sysop-name'      => 'Ylläpitäjät',
+'group-sysop-desc'      => 'Luotetut käyttäjät voivat estää käyttäjiä ja poistaa ja suojata artikkeleita',
+'group-bureaucrat-name' => 'Byrokraatit',
 'group-bureaucrat-desc' => 'Byrokraatit voivat tehdä ylläpitäjiä',
-'group-steward-name'    => 'Ylivalvoja',
-'group-steward-desc'    => 'Ylivalvojilla on kaikki oikeudet',
+'group-bot-name'        => 'Botit',
+'group-bot-desc'        => '',
 
 # Recent changes
 #
@@ -652,6 +663,7 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'uploadlogpagetext'   => 'Alla on luettelo uusimmista tallennuksista. Kaikki ajat näytetään palvelimen aikavyöhykkeessä (UTC).',
 'filename'            => 'Tiedoston nimi',
 'filedesc'            => 'Yhteenveto',
+'fileuploadsummary'   => 'Yhteenveto:',
 'filestatus'          => 'Tiedoston tekijänoikeudet',
 'filesource'          => 'Lähde',
 'copyrightpage'       => 'Project:Tekijänoikeudet',
@@ -662,15 +674,15 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'illegalfilename'     => 'Tiedoston nimessä \'\'\'$1\'\'\' on merkkejä, joita ei sallita sivujen nimissä. Vaihda tiedoston nimeä, ja yritä tallentamista uudelleen.',
 'badfilename'         => 'Tiedoston nimi vaihdettiin: $1.',
 'badfiletype'         => '".$1" ei ole suositeltava tiedostomuoto.',
-'largefile'           => 'Tiedostojen ei tulisi olla yli 100 kilotavun kokoisia.',
-'emptyfile'           => 'Tiedosto, jota yritit tallentaa näyttäisi olevan tyhjä. Tarkista, että kirjoitit polun ja nimen oikein.',
-'fileexists'          => 'Tämän niminen tiedosto on jo olemassa. Tarkista $1, ellet ole varma, että haluat muuttaa sitä.',
+'largefile'           => 'Tiedostojen ei tulisi olla yli $1 kilotavun kokoisia. Tiedoston, jonka yritit tallentaa, koko on $2.',
+'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ä.',
 'successfulupload'    => 'Tallennus onnistui',
 'fileuploaded'        => 'Tiedosto \'\'\'$1\'\'\' on tallennettu onnistuneesti. Seuraa linkkiä ($2) kuvaussivulle, ja täytä tiedostoon liityvät tiedot, kuten mistä se on peräisin, milloin se on luotu, kuka sen loi ja mahdollisesti muita tietämiäsi tietoja. Jos tiedosto on kuva, voit lisätä sen sivulle näin: \'\'\'<nowiki>[[Kuva:$1|thumb|Kuvaus]]</nowiki>\'\'\'',
 'uploadwarning'       => 'Tallennusvaroitus',
 'savefile'            => 'Tallenna',
 'uploadedimage'       => 'tallensi tiedoston [[$1]]',
-'uploaddisabled'      => 'Tiedostojen lähettäminen on poissa käytöstä.',
+'uploaddisabled'      => 'Tiedostojen tallentaminen ei ole käytöstä.',
 'uploadscripted'      => 'Tämä tiedosto sisältää HTML-koodia tai skriptejä, jotka selain saattaa virheellisesti suorittaa.',
 'uploadcorrupt'       => 'Tiedosto on vioittunut tai sillä on väärä tiedostopääte. Tarkista tiedosto ja lähetä se uudelleen.',
 'uploadvirus'         => 'Tiedosto sisältää viruksen. Tarkemmat tiedot: $1',
@@ -699,8 +711,10 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'linkstoimage'        => 'Seuraavilta sivuilta on linkki tähän tiedostoon:',
 'nolinkstoimage'      => 'Tähän tiedostoon ei ole linkkejä miltään sivulta.',
 'sharedupload'        => 'Tämä tiedosto on jaettu ja muut projektit saattavat käyttää sitä.',
-'shareduploadwiki'    => 'Katso [$1 kuvaussivulta] lisätietoja.',
-'noimage'             => 'Tämän nimistä tiedostoa ei ole olemassa. Voit [$1 tallentaa tiedoston] {{GRAMMAR:genitive|{{SITENAME}}}}',
+'shareduploadwiki'    => 'Katso $1 lisätietoja.',
+'shareduploadwiki-linktext' => 'kuvaussivulta',
+'noimage'             => 'Tämän nimistä tiedostoa ei ole olemassa. Voit $1 {{GRAMMAR:genitive|{{SITENAME}}}}',
+'noimage-linktext'    => 'tallentaa tiedoston',
 'uploadnewversion'    => '[$1 Tallenna] uusi versio tästä tiedostosta',
 
 # Statistics
@@ -746,12 +760,14 @@ Huomaa, että {{GRAMMAR:inessive|{{SITENAME}}}} muut voivat muokata tai poistaa
 'popularpages'        => 'Suositut sivut',
 'nviews'              => '$1 latausta',
 'wantedpages'         => 'Halutut sivut',
+'mostlinked'          => 'Sivut, joihin on eniten linkkejä',
 'nlinks'              => '$1 linkkiä',
 'allpages'            => 'Kaikki sivut',
+'prefixindex'         => 'Etuliiteluettelo',
 'randompage'          => 'Satunnainen sivu',
 'shortpages'          => 'Lyhyet sivut',
 'longpages'           => 'Pitkät sivut',
-'deadendpages'        => 'Sivut, joilta ei linkkejä',
+'deadendpages'        => 'Sivut, joilla ei ole linkkejä',
 'listusers'           => 'Käyttäjälista',
 'specialpages'        => 'Toimintosivut',
 'spheading'           => 'Toimintosivut',
@@ -801,7 +817,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ä',
@@ -924,13 +940,15 @@ Palaute ja lisäapu osoitteessa:
 'unprotectcomment'    => 'Syy suojauksen poistoon',
 
 # Undelete
-'undelete'            => 'Palauta poistettu sivu',
-'undelete_short'      => 'Palauta $1 muokkausta',
-'undeletepage'        => 'Selaa ja palauta poistettuja sivuja',
+'undelete'            => 'Palauta poistettuja sivuja',
+'undelete_short'      => 'Palauta $1 versiota',
+'undeletepage'        => 'Poistettujen sivujen selaus',
+'viewdeletedpage'     => 'Poistettujen sivujen selaus',
 'undeletepagetext'    => 'Seuraavat sivut on poistettu, mutta ne löytyvät vielä arkistosta, joten ne ovat palautettavissa. Arkisto saatetaan tyhjentää aika ajoin.',
 'undeletearticle'     => 'Palauta poistettu sivu',
 'undeleterevisions'   => '$1 versiota arkistoitu.',
 'undeletehistory'     => 'Jos palautat sivun, kaikki versiot lisätään sivun historiaan. Jos uusi sivu samalla nimellä on luotu poistamisen jälkeen, palautetut versiot lisätään sen historiaan, ja olemassa olevaa versiota ei korvata automaattisesti.',
+'undeletehistorynoadmin' => 'Tämä sivu on poistettu. Syy sivun poistamiseen näkyy yhteenvedossa, jossa on myös tiedot, ketkä ovat muokanneet tätä sivua ennen poistamista. Sivujen varsinainen sisältö on vain ylläpitäjien luettavissa.',
 'undeleterevision'    => 'Poistettu versio hetkellä $1',
 'undeletebtn'         => 'Palauta!',
 'undeletedarticle'    => 'palautti sivun $1',
@@ -950,12 +968,13 @@ Palaute ja lisäapu osoitteessa:
 '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ä.',
@@ -969,25 +988,28 @@ Palaute ja lisäapu osoitteessa:
 'ipadressorusername'  => 'IP-osoite tai käyttäjätunnus',
 'ipbexpiry'           => 'Umpeutuu',
 'ipbreason'           => 'Syy',
-'ipbsubmit'           => 'Estä tämä osoite',
+'ipbsubmit'           => 'Estä',
 'ipbother'            => 'Vapaamuotoinen kesto',
 'ipboptions'          => '2 tuntia:2 hours,1 päivä:1 day,3 päivää:3 days,1 viikko:1 week,2 viikkoa:2 weeks,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year,ikuisesti:infinite',
 'ipbotheroption'      => 'Muu kesto',
 'badipaddress'        => 'IP-osoite on väärin muotoiltu.',
 'blockipsuccesssub'   => 'Esto onnistui',
 'blockipsuccesstext'  => 'Käyttäjä tai IP-osoite \'\'\'$1\'\'\' on estetty.<br />Nykyiset estot löytyvät [[Special:Ipblocklist|estolistalta]].',
-'unblockip'           => 'Poista IP-osoitteen muokkausesto',
-'unblockiptext'       => 'Käytä alla olevaa lomaketta poistaaksesi kirjoitusesto aikaisemmin estetyltä IP-osoitteelta.',
-'ipusubmit'           => 'Poista tämän osoitteen esto',
-'ipusuccess'          => 'IP-osoitteen \'\'\'$1\'\'\' esto poistettu',
+'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ä.',
@@ -1230,6 +1252,8 @@ ta['t-contributions'] = new Array('','Näytä lista tämän käyttäjän muokkau
 ta['t-emailuser'] = new Array('','Lähetä sähköpostia tälle käyttäjälle');
 ta['t-upload'] = new Array('u','Tallenna kuvia tai muita mediatiedostoja');
 ta['t-specialpages'] = new Array('q','Näytä toimintosivut');
+ta['t-print']=new Array('', 'Lataa sivun tulostamiseen sopivalla tyylisivulla. Voit aina käyttää suoraan selaimen tulosta-toimintoa.');
+ta['t-permalink'] = new Array('', 'Ikuisesti toimiva linkki sivun tähän versioon, paitsi jos sivu poistetaan.');
 ta['ca-nstab-main'] = new Array('c','Näytä sisältösivu');
 ta['ca-nstab-user'] = new Array('c','Näytä käyttäjäsivu');
 ta['ca-nstab-media'] = new Array('c','Näytä mediasivu');
@@ -1249,21 +1273,22 @@ ta['ca-nstab-category'] = new Array('c','Näytä luokkasivu');
 'previousdiff'        => '← Edellinen muutos',
 'nextdiff'            => 'Seuraava muutos →',
 
-'imagemaxsize'        => 'Rajoita kuvien koko kuvien kuvaussivuilla arvoon: ',
-'thumbsize'           => 'Pikkukuvien koko : ',
+'imagemaxsize'        => 'Rajoita kuvien koko kuvien kuvaussivuilla arvoon ',
+'thumbsize'           => 'Pikkukuvien koko: ',
 'showbigimage'        => 'Lataa korkeatarkkuuksinen versio ($1×$2, $3 KiB)',
 
 'newimages'           => 'Uudet kuvat',
+'showhidebots'        => '($1 botit)',
 'noimages'            => 'Ei uusia kuvia.',
 
 # labels for User: and Title: on Special:Log pages
 'specialloguserlabel' => 'Käyttäjä: ',
-'speciallogtitlelabel'=> 'Otsikko: ',
+'speciallogtitlelabel'=> 'Kohde: ',
 
 'passwordtooshort'    => 'Salasanasi on liian lyhyt. Salasanan pitää olla vähintään $1 merkkiä pitkä.',
 
 # Media Warning
-'mediawarning' => '\'\'\'Varoitus\'\'\': Tämä tiedosto saattaa sisältää This file may contain vahingollista koodia, ja suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.
+'mediawarning' => '\'\'\'Varoitus\'\'\': Tämä tiedosto saattaa sisältää vahingollista koodia, ja suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.
 <hr>',
 
 'fileinfo' => '$1 KiB, MIME-tyyppi: <code>$2</code>',
@@ -1272,6 +1297,8 @@ ta['ca-nstab-category'] = new Array('c','Näytä luokkasivu');
 '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',
@@ -1302,150 +1329,225 @@ Jos tämä tunnus ei ole sinun, ÄLÄ seuraa linkkiä. Varmennuskoodi vanhenee $
 'searchfulltext'      => 'Etsi koko tekstiä',
 'createarticle'       => 'Luo sivu',
 
+# delete conflict
+
+'deletedwhileediting' => '<center>\'\'\'Varoitus\'\'\': Tämä sivu on poistettu sen jälkeen, kun aloitit sen muokkaamisen!</center>',
+'confirmrecreate' => 'Käyttäjä \'\'\'[[{{ns:user}}:$1|$1]]\'\'\' ([[{{ns:user_talk}}:$1|keskustelu]]) poisti sivun sen jälkeen, kun aloit muokata sitä. Syy oli:
+: \'\'$2\'\'
+Ole hyvä ja varmista, että haluat luoda sivun uudelleen.',
+'recreate' => 'Luo uudelleen',
+'tooltip-recreate' => '',
+
+'unit-pixel' => ' px',
+
 );
 
 
-  #--------------------------------------------------------------------------
-  # Internationalisation code
-  #--------------------------------------------------------------------------
+       #--------------------------------------------------------------------------
+       # Internationalisation code
+       #--------------------------------------------------------------------------
 
 class LanguageFi extends LanguageUtf8 {
-  function LanguageFi() {
-    global $wgNamespaceNamesFi, $wgMetaNamespace;
-    LanguageUtf8::LanguageUtf8();
-    $wgNamespaceNamesFi[NS_PROJECT_TALK] = 'Keskustelu_' . $this->convertGrammar( $wgMetaNamespace, 'elative' );
-  }
-
-  function getBookstoreList () {
-    global $wgBookstoreListFi ;
-    return $wgBookstoreListFi ;
-  }
-
-  function getNamespaces() {
-    global $wgNamespaceNamesFi;
-    return $wgNamespaceNamesFi;
-  }
-
-  function getQuickbarSettings() {
-    global $wgQuickbarSettingsFi;
-    return $wgQuickbarSettingsFi;
-  }
-
-  function getSkinNames() {
-    global $wgSkinNamesFi;
-    return $wgSkinNamesFi;
-  }
-
-  function date( $ts, $adj = false ) {
-    if ( $adj ) { $ts = $this->userAdjust( $ts ); }
-
-    $d = (0 + substr( $ts, 6, 2 )) . '. ' .
-    $this->getMonthName( substr( $ts, 4, 2 ) ) . 'ta ' . substr( $ts, 0, 4 );
-    return $d;
-  }
-
-  function time( $ts, $adj = false, $seconds = true ) {
-    if ( $adj ) { $ts = $this->userAdjust( $ts ); }
-
-    $t = substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 );
-    if ( $seconds ) {
-    $t .= ':' . substr( $ts, 12, 2 );
-    }
-    return $t;
-  }
-
-  function timeanddate( $ts, $adj = false ) {
-    return $this->date( $ts, $adj ) . ' kello ' . $this->time( $ts, $adj );
-  }
-
-  function getMessage( $key ) {
-    global $wgAllMessagesFi;
-    if( isset( $wgAllMessagesFi[$key] ) ) {
-      return $wgAllMessagesFi[$key];
-    } else {
-      return parent::getMessage( $key );
-    }
-  }
-
-  /**
-   * Finnish numeric formatting is 123 456,78.
-   * Notice that the space is non-breaking.
-   */
-  function formatNum( $number, $year = false ) {
-    return $year ? $number : strtr($this->commafy($number), '.,', ", " );
-  }
-
-  /**
-   * Avoid grouping whole numbers between 0 to 9999
-   */
-  function commafy($_) {
-    if (!preg_match('/^\d{1,4}$/',$_)) {
-      return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
-    } else {
-      return $_;
-    }
-  }
-
-  # Convert from the nominative form of a noun to some other case
-  # Invoked with {{GRAMMAR:case|word}}
-  function convertGrammar( $word, $case ) {
-    # These rules are not perfect, but they are currently only used for site names so it doesn't
-    # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
-    switch ( $case ) {
-      case 'genitive':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaattien';
-        } else {
-          $word .= 'n';
-        }
-      break;
-      case 'elative':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaateista';
-        } else {
-          if ( mb_substr($word, -1) == 'y' ) {
-            $word .= 'stä';
-          } else {
-            $word .= 'sta';
-          }
-        }
-        break;
-      case 'partitive':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaatteja';
-        } else {
-          if ( mb_substr($word, -1) == 'y' ) {
-            $word .= 'ä';
-          } else {
-            $word .= 'a';
-          }
-        }
-        break;
-      case 'illative':
-        # Double the last letter and add 'n'
-        # mb_substr has a compatibility function in GlobalFunctions.php
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaatteihin';
-        } else {
-          $word = $word . mb_substr($word,-1) . 'n';
-        }
-        break;
-      case 'inessive':
-        if ( $word == 'Wikisitaatit' ) {
-          $word = 'Wikisitaateissa';
-        } else {
-          if ( mb_substr($word, -1) == 'y' ) {
-            $word .= 'ssä';
-          } else {
-            $word .= 'ssa';
-          }
-        }
-        break;
-
-
-    }
-    return $word;
-  }
+       function LanguageFi() {
+               global $wgNamespaceNamesFi, $wgMetaNamespace;
+               LanguageUtf8::LanguageUtf8();
+               $wgNamespaceNamesFi[NS_PROJECT_TALK] = 'Keskustelu_' . $this->convertGrammar( $wgMetaNamespace, 'elative' );
+       }
+
+       function getBookstoreList () {
+               global $wgBookstoreListFi ;
+               return $wgBookstoreListFi ;
+       }
+
+       function getNamespaces() {
+               global $wgNamespaceNamesFi;
+               return $wgNamespaceNamesFi;
+       }
+
+       function getQuickbarSettings() {
+               global $wgQuickbarSettingsFi;
+               return $wgQuickbarSettingsFi;
+       }
+
+       function getSkinNames() {
+               global $wgSkinNamesFi;
+               return $wgSkinNamesFi;
+       }
+
+       function getDateFormats() {
+               global $wgDateFormatsFi;
+               return $wgDateFormatsFi;
+       }
+
+       /**
+        * @access public
+        * @param mixed  $ts the time format which needs to be turned into a
+        *               date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+        * @param bool   $adj whether to adjust the time output according to the
+        *               user configured offset ($timecorrection)
+        * @param mixed  $format what format to return, if it's false output the
+        *               default one.
+        * @param string $timecorrection the time offset as returned by
+        *               validateTimeZone() in Special:Preferences
+        * @return string
+        */
+       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 'ISO 8601': return "$yyyy-$mm-$dd";
+                       default: return "$d. $mmmm $yyyy";
+               }
+       }
+
+       /**
+       * @access public
+       * @param mixed  $ts the time format which needs to be turned into a
+       *               date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+       * @param bool   $adj whether to adjust the time output according to the
+       *               user configured offset ($timecorrection)
+       * @param mixed  $format what format to return, if it's false output the
+       *               default one (default true)
+       * @param string $timecorrection the time offset as returned by
+       *               validateTimeZone() in Special:Preferences
+       * @return string
+       */
+       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 'ISO 8601': return "$hh:$mm:$ss";
+                       default: return "$hh.$mm";
+               }
+       }
+
+       /**
+       * @access public
+       * @param mixed  $ts the time format which needs to be turned into a
+       *               date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+       * @param bool   $adj whether to adjust the time output according to the
+       *               user configured offset ($timecorrection)
+       * @param mixed  $format what format to return, if it's false output the
+       *               default one (default true)
+       * @param string $timecorrection the time offset as returned by
+       *               validateTimeZone() in Special:Preferences
+       * @return string
+       */
+       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 'ISO 8601': 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;
+       }
+
 }
 
 ?>