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 for decimals is missing/ // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk $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]; } } } /** * Ukrainian numeric format is "12 345,67" but "1234,56" * * @param $_ string * * @return string */ function commafy( $_ ) { if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) { return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) ); } else { return $_; } } }