Fixes for r60599:
[lhc/web/wiklou.git] / languages / classes / LanguageSr.php
index 0af882b..693660f 100644 (file)
@@ -1,9 +1,8 @@
 <?php
 
-$dir = dirname(__FILE__) . '/';
-require_once( $dir . '../LanguageConverter.php' );
-require_once( $dir . 'LanguageSr_ec.php' );
-require_once( $dir . 'LanguageSr_el.php' );
+require_once( dirname(__FILE__).'/../LanguageConverter.php' );
+require_once( dirname(__FILE__).'/LanguageSr_ec.php' );
+require_once( dirname(__FILE__).'/LanguageSr_el.php' );
 
 /**
  * There are two levels of conversion for Serbian: the script level
@@ -77,23 +76,13 @@ class SrConverter extends LanguageConverter {
                return $carray;
        }
 
-       // Do not convert content on talk pages
-       function parserConvert( $text, &$parser ){
-               if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage())
-                       $this->mDoContentConvert=false;
-               else
-                       $this->mDoContentConvert=true;
-
-               return parent::parserConvert($text, $parser );
-       }
-
        /*
         * A function wrapper:
         *   - if there is no selected variant, leave the link
         *     names as they were
         *   - do not try to find variants for usernames
         */
-       function findVariantLink( &$link, &$nt, $forTemplate = false ) {
+       function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
                // check for user namespace
                if(is_object($nt)){
                        $ns = $nt->getNamespace();
@@ -102,7 +91,7 @@ class SrConverter extends LanguageConverter {
                }
 
                $oldlink=$link;
-               parent::findVariantLink( $link, $nt, $forTemplate );
+               parent::findVariantLink( $link, $nt, $ignoreOtherCond );
                if($this->getPreferredVariant()==$this->mMainLanguageCode)
                        $link=$oldlink;
        }
@@ -123,7 +112,7 @@ class SrConverter extends LanguageConverter {
         */
        function autoConvert($text, $toVariant=false) {
                global $wgTitle;
-               if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_IMAGE){
+               if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_FILE){
                        $imagename = $wgTitle->getNsText();
                        if(preg_match("/^$imagename:/",$text)) return $text;
                }
@@ -176,12 +165,34 @@ class LanguageSr extends LanguageSr_ec {
                        'sr-el' => 'sr',
                );
 
-               $marker = array();//don't mess with these, leave them as they are
                $flags = array(
                        'S' => 'S', 'писмо' => 'S', 'pismo' => 'S',
                        'W' => 'W', 'реч'   => 'W', 'reč'   => 'W', 'ријеч' => 'W', 'riječ' => 'W'
                );
-               $this->mConverter = new SrConverter($this, 'sr', $variants, $variantfallbacks, $marker, $flags);
+               $this->mConverter = new SrConverter($this, 'sr', $variants, $variantfallbacks, $flags);
                $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
        }
+
+       function convertPlural( $count, $forms ) {
+               if ( !count($forms) ) { return ''; }
+
+               //if no number with word, then use $form[0] for singular and $form[1] for plural or zero
+               if( count($forms) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
+
+               // FIXME: CLDR defines 4 plural forms. Form with decimals missing.
+               // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
+               $forms = $this->preConvertPlural( $forms, 3 );
+
+               if ($count > 10 && floor(($count % 100) / 10) == 1) {
+                       return $forms[2];
+               } else {
+                       switch ($count % 10) {
+                               case 1:  return $forms[0];
+                               case 2:
+                               case 3:
+                               case 4:  return $forms[1];
+                               default: return $forms[2];
+                       }
+               }
+       }
 }