Merge "Localisation updates from http://translatewiki.net."
[lhc/web/wiklou.git] / languages / classes / LanguageFi.php
index 8fc2549..6a2820d 100644 (file)
@@ -1,28 +1,45 @@
 <?php
-/** Finnish (Suomi)
+/**
+ * Finnish (Suomi) specific code.
  *
- * @package MediaWiki
- * @subpackage Language
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Finnish (Suomi)
+ *
+ * @ingroup Language
  */
 class LanguageFi extends Language {
+
        /**
-        * Avoid grouping whole numbers between 0 to 9999
+        * Convert from the nominative form of a noun to some other case
+        * Invoked with {{grammar:case|word}}
+        *
+        * @param $word string
+        * @param $case string
+        * @return string
         */
-       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 ) {
                global $wgGrammarForms;
-               if ( isset($wgGrammarForms['fi'][$case][$word]) ) {
+               if ( isset( $wgGrammarForms['fi'][$case][$word] ) ) {
                        return $wgGrammarForms['fi'][$case][$word];
                }
 
@@ -32,6 +49,13 @@ class LanguageFi extends Language {
                # wovel harmony flag
                $aou = preg_match( '/[aou][^äöy]*$/i', $word );
 
+               # The flag should be false for compounds where the last word has only neutral vowels (e/i).
+               # The general case cannot be handled without a dictionary, but there's at least one notable
+               # special case we should check for:
+
+               if ( preg_match( '/wiki$/i', $word ) )
+                       $aou = false;
+
                # append i after final consonant
                if ( preg_match( '/[bcdfghjklmnpqrstvwxz]$/i', $word ) )
                        $word .= 'i';
@@ -41,24 +65,29 @@ class LanguageFi extends Language {
                                $word .= 'n';
                                break;
                        case 'elative':
-                               $word .= ($aou ? 'sta' : 'stä');
+                               $word .= ( $aou ? 'sta' : 'stä' );
                                break;
                        case 'partitive':
-                               $word .= ($aou ? 'a' : 'ä');
+                               $word .= ( $aou ? 'a' : 'ä' );
                                break;
                        case 'illative':
                                # Double the last letter and add 'n'
                                # mb_substr has a compatibility function in GlobalFunctions.php
-                               $word = $word . mb_substr($word, -1) . 'n';
+                               $word = $word . mb_substr( $word, -1 ) . 'n';
                                break;
                        case 'inessive':
-                               $word .= ($aou ? 'ssa' : 'ssä');
+                               $word .= ( $aou ? 'ssa' : 'ssä' );
                                break;
                }
                return $word;
        }
 
-       function translateBlockExpiry( $str ) {
+       /**
+        * @param $str string
+        * @param $forContent bool
+        * @return string
+        */
+       function translateBlockExpiry( $str, $forContent = false ) {
                /*
                        'ago', 'now', 'today', 'this', 'next',
                        'first', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth',
@@ -73,7 +102,7 @@ class LanguageFi extends Language {
                        'monday' => 'maanantai',
                        'tuesday' => 'tiistai',
                        'wednesday' => 'keskiviikko',
-                       'thursay' => 'torstai',
+                       'thursday' => 'torstai',
                        'friday' => 'perjantai',
                        'saturday' => 'lauantai',
                        'sunday' => 'sunnuntai',
@@ -116,15 +145,15 @@ class LanguageFi extends Language {
                );
 
                $final = '';
-               $tokens = explode ( ' ', $str);
-               foreach( $tokens as $item ) {
-                       if ( !is_numeric($item) ) {
-                               if ( count ( explode( '-', $item ) ) == 3 && strlen($item) == 10 ) {
+               $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");
+                                       $final .= ' ' . $this->date( "{$yyyy}{$mm}{$dd}000000);
                                        continue;
                                }
-                               if( isset( $weekds[$item] ) ) {
+                               if ( isset( $weekds[$item] ) ) {
                                        $final .= ' ' . $weekds[$item];
                                        continue;
                                }
@@ -132,9 +161,7 @@ class LanguageFi extends Language {
 
                        $final .= ' ' . $item;
                }
-               return '<span class="blockexpiry" title="' . htmlspecialchars($str). '">”' . trim( $final ) . '”</span>';
-       }
 
+               return htmlspecialchars( trim( $final ) );
+       }
 }
-
-?>