handleExplicitPluralForms( $count, $forms ); if ( is_string( $forms ) ) { return $forms; } if ( !count( $forms ) ) { return ''; } // If the actual number is not mentioned in the expression, then just two forms are enough: // singular for $count === 1 // plural for $count !== 1 // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}." if ( count( $forms ) === 2 ) { return $count === 1 ? $forms[0] : $forms[1]; } // @todo 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 && (int)floor( ( $count % 100 ) / 10 ) === 1 ) { return $forms[2]; } switch ( $count % 10 ) { case 1: return $forms[0]; case 2: case 3: case 4: return $forms[1]; default: return $forms[2]; } } /** * Four-digit number should be without group commas (spaces) * See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей * So "1 234 567", "12 345" but "1234" * * @param $_ string * * @return string */ function commafy( $_ ) { if ( preg_match( '/^-?\d{1,4}(\.\d*)?$/', $_ ) ) { return $_; } else { return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } } }