MediaWiki  REL1_22
LanguageFi.php
Go to the documentation of this file.
00001 <?php
00030 class LanguageFi extends Language {
00031 
00040     function convertGrammar( $word, $case ) {
00041         global $wgGrammarForms;
00042         if ( isset( $wgGrammarForms['fi'][$case][$word] ) ) {
00043             return $wgGrammarForms['fi'][$case][$word];
00044         }
00045 
00046         # These rules are not perfect, but they are currently only used for site names so it doesn't
00047         # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
00048 
00049         # wovel harmony flag
00050         $aou = preg_match( '/[aou][^äöy]*$/i', $word );
00051 
00052         # The flag should be false for compounds where the last word has only neutral vowels (e/i).
00053         # The general case cannot be handled without a dictionary, but there's at least one notable
00054         # special case we should check for:
00055 
00056         if ( preg_match( '/wiki$/i', $word ) ) {
00057             $aou = false;
00058         }
00059 
00060         # append i after final consonant
00061         if ( preg_match( '/[bcdfghjklmnpqrstvwxz]$/i', $word ) ) {
00062             $word .= 'i';
00063         }
00064 
00065         switch ( $case ) {
00066             case 'genitive':
00067                 $word .= 'n';
00068                 break;
00069             case 'elative':
00070                 $word .= ( $aou ? 'sta' : 'stä' );
00071                 break;
00072             case 'partitive':
00073                 $word .= ( $aou ? 'a' : 'ä' );
00074                 break;
00075             case 'illative':
00076                 # Double the last letter and add 'n'
00077                 # mb_substr has a compatibility function in GlobalFunctions.php
00078                 $word = $word . mb_substr( $word, -1 ) . 'n';
00079                 break;
00080             case 'inessive':
00081                 $word .= ( $aou ? 'ssa' : 'ssä' );
00082                 break;
00083         }
00084         return $word;
00085     }
00086 
00092     function translateBlockExpiry( $str, $forContent = false ) {
00093         /*
00094             'ago', 'now', 'today', 'this', 'next',
00095             'first', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth',
00096             'tomorrow', 'yesterday'
00097 
00098             $months = 'january:tammikuu,february:helmikuu,march:maaliskuu,april:huhtikuu,may:toukokuu,june:kesäkuu,' .
00099                 'july:heinäkuu,august:elokuu,september:syyskuu,october:lokakuu,november:marraskuu,december:joulukuu,' .
00100                 'jan:tammikuu,feb:helmikuu,mar:maaliskuu,apr:huhtikuu,jun:kesäkuu,jul:heinäkuu,aug:elokuu,sep:syyskuu,'.
00101                 'oct:lokakuu,nov:marraskuu,dec:joulukuu,sept:syyskuu';
00102         */
00103         $weekds = array(
00104             'monday' => 'maanantai',
00105             'tuesday' => 'tiistai',
00106             'wednesday' => 'keskiviikko',
00107             'thursday' => 'torstai',
00108             'friday' => 'perjantai',
00109             'saturday' => 'lauantai',
00110             'sunday' => 'sunnuntai',
00111             'mon' => 'ma',
00112             'tue' => 'ti',
00113             'tues' => 'ti',
00114             'wed' => 'ke',
00115             'wednes' => 'ke',
00116             'thu' => 'to',
00117             'thur' => 'to',
00118             'thurs' => 'to',
00119             'fri' => 'pe',
00120             'sat' => 'la',
00121             'sun' => 'su',
00122             'next' => 'seuraava',
00123             'tomorrow' => 'huomenna',
00124             'ago' => 'sitten',
00125             'seconds' => 'sekuntia',
00126             'second' => 'sekunti',
00127             'secs' => 's',
00128             'sec' => 's',
00129             'minutes' => 'minuuttia',
00130             'minute' => 'minuutti',
00131             'mins' => 'min',
00132             'min' => 'min',
00133             'days' => 'päivää',
00134             'day' => 'päivä',
00135             'hours' => 'tuntia',
00136             'hour' => 'tunti',
00137             'weeks' => 'viikkoa',
00138             'week' => 'viikko',
00139             'fortnights' => 'tuplaviikkoa',
00140             'fortnight' => 'tuplaviikko',
00141             'months' => 'kuukautta',
00142             'month' => 'kuukausi',
00143             'years' => 'vuotta',
00144             'year' => 'vuosi',
00145             'infinite' => 'ikuisesti',
00146             'indefinite' => 'ikuisesti'
00147         );
00148 
00149         $final = '';
00150         $tokens = explode ( ' ', $str );
00151         foreach ( $tokens as $item ) {
00152             if ( !is_numeric( $item ) ) {
00153                 if ( count ( explode( '-', $item ) ) == 3 && strlen( $item ) == 10 ) {
00154                     list( $yyyy, $mm, $dd ) = explode( '-', $item );
00155                     $final .= ' ' . $this->date( "{$yyyy}{$mm}{$dd}000000" );
00156                     continue;
00157                 }
00158                 if ( isset( $weekds[$item] ) ) {
00159                     $final .= ' ' . $weekds[$item];
00160                     continue;
00161                 }
00162             }
00163 
00164             $final .= ' ' . $item;
00165         }
00166 
00167         return htmlspecialchars( trim( $final ) );
00168     }
00169 }