diff options
Diffstat (limited to 'languages/classes/LanguageSr.php')
-rw-r--r-- | languages/classes/LanguageSr.php | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php index 79a2ec25..693660fb 100644 --- a/languages/classes/LanguageSr.php +++ b/languages/classes/LanguageSr.php @@ -76,16 +76,6 @@ 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 @@ -175,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]; + } + } + } } |