return $parser->getFunctionLang()->convertGrammar( $word, $case );
}
- static function plural( $parser, $text = '', $arg0 = null, $arg1 = null, $arg2 = null, $arg3 = null, $arg4 = null ) {
+ static function plural( $parser, $text = '') {
+ $forms = array_slice( func_get_args(), 2);
$text = $parser->getFunctionLang()->parseFormattedNumber( $text );
- return $parser->getFunctionLang()->convertPlural( $text, $arg0, $arg1, $arg2, $arg3, $arg4 );
+ return $parser->getFunctionLang()->convertPlural( $text, $forms );
}
/**
*
* Example: {{plural:{{NUMBEROFARTICLES}}|article|articles}}
*
- * @param integer $count
- * @param string $wordform1
- * @param string $wordform2
- * @param string $wordform3 (optional)
- * @param string $wordform4 (optional)
- * @param string $wordform5 (optional)
- * @return string
+ * @param integer $count Non-localized number
+ * @param array $forms Different plural forms
+ * @return string Correct form of plural for $count in this language
+ */
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ( abs($count) == 1 ) ? $forms[0] : $forms[1];
+ }
+
+ /**
+ * Checks that convertPlural was given an array and pads it to requested
+ * amound of forms by copying the last one.
+ *
+ * @param integer $count How many forms should there be at least
+ * @param array $forms Array of forms given to convertPlural
+ * @return array Padded array of forms or an exception if not an array
*/
- function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
- return ( $count == '1' || $count == '-1' ) ? $w1 : $w2;
+ protected function preConvertPlural( Array $forms, $count ) {
+ while ( count($forms) < $count ) {
+ $forms[] = $forms[count($forms)-1];
+ }
+ return $forms;
}
/**
*/
class LanguageAr extends Language {
- function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
- $forms = array($w1, $w2, $w3, $w4, $w5);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 5 );
+
if ( $count == 1 ) {
$index = 0;
} elseif( $count == 2 ) {
*/
class LanguageBat_smg extends Language {
- public function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 4 );
+
$count = abs( $count );
if ( $count === 0 || ($count%100 === 0 || ($count%100 >= 10 && $count%100 < 20)) ) {
- return $w3;
+ return $forms[2];
} elseif ( $count%10 === 1 ) {
- return $w1;
+ return $forms[0];
} elseif ( $count%10 === 2 ) {
- return $w2;
+ return $forms[1];
} else {
- return $w4;
+ return $forms[3];
}
}
*/
class LanguageBe extends Language {
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
+
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}
*/
class LanguageBe_tarask extends Language {
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}
class LanguageBs extends Language {
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}
return $word;
}
- # Plural form transformations, needed for some languages.
- # Invoked by {{plural:count|wordform1|wordform2|wordform3}}
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- switch ( $count ) {
- case 1:
- return $wordform1;
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
- case 2:
- case 3:
- case 4:
- return $wordform2;
+ switch ( $count ) {
+ case 1: return $forms[0];
+ case 2:
+ case 3:
+ case 4: return $forms[1];
+ default: return $forms[2];
+ }
+ }
- default:
- return $wordform3;
- };
- }
}
return $word;
}
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $wordform4, $w5) {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 4 );
+
switch ($count % 10) {
- case 1: return $wordform1;
- case 2: return $wordform2;
- case 3: return $wordform3;
- case 4: return $wordform3;
- default: return $wordform4;
+ case 1: return $forms[0];
+ case 2: return $forms[1];
+ case 3:
+ case 4: return $forms[2];
+ default: return $forms[3];
}
}
return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
}
- function convertPlural( $count, $singular, $dual, $plural, $pluralgen, $w5 ) {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 4 );
+
switch ( abs( $count ) % 100 ) {
- case 1:
- return $singular;
- case 2:
- return $dual;
+ case 1: return $forms[0]; // singular
+ case 2: return $forms[1]; // dual
case 3:
- case 4:
- return $plural;
- default:
- return $pluralgen;
+ case 4: return $forms[2]; // plural
+ default: return $forms[3]; // pluralgen
}
}
}
/**
* Use singular form for zero (see bug 7309)
*/
- function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
- return $count <= '1' ? $w1 : $w2;
- }
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
+
}
*
* @return string of the suited form of word
*/
- public function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ( $count == '1' ) {
- return $w1;
+ return $forms[0];
} elseif ( $count == '2' && $w3 ) {
- return $w3;
+ return $forms[2];
} else {
- return $w2;
+ return $forms[1];
}
}
}
*/
class LanguageHr extends Language {
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
+
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}
return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
}
- function convertPlural( $count, $singular, $dual, $plural, $pluralgen, $w5 ) {
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 4 );
+
switch ( abs( $count ) % 100 ) {
- case 1:
- return $singular;
- case 2:
- return $dual;
+ case 1: return $forms[0]; // singular
+ case 2: return $forms[1]; // dual
case 3:
- case 4:
- return $plural;
- default:
- return $pluralgen;
+ case 4: return $forms[2]; // plural
+ default: return $forms[3]; // pluralgen
}
}
}
return $word;
}
- function convertPlural( $count, $wordform1, $wordform2, $w3, $w4, $w5) {
- $count = str_replace (' ', '', $count);
- if (abs($count) <= 1) {
- return $wordform1;
- } else {
- return $wordform2;
- }
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return (abs($count) <= 1) ? $forms[0] : $forms[1];
}
/*
/**
* Handle cases of (1, other, 0) or (1, other)
*/
- public function convertPlural( $count, $w1, $w2, $w3, $w4, $w5 ) {
- $count = str_replace (' ', '', $count);
- if ( $count == '1' ) {
- return $w1;
- } elseif ( $count == '0' && $w3 ) {
- return $w3;
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ( $count == 1 ) {
+ return $forms[0];
+ } elseif ( $count == 0 ) {
+ return $forms[2];
} else {
- return $w2;
+ return $forms[1];
}
}
}
2 - trys (3) lapai
3 - penkiolika (15) lapų
*/
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- if ($count%10==1 && $count%100!=11) return $wordform1;
- if ($count%10>=2 && ($count%100<10 || $count%100>=20)) return $wordform2;
- //if third form not specified, then use second form
- return empty($wordform3)?$wordform2:$wordform3;
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
+ if ($count%10==1 && $count%100!=11) return $forms[0];
+ if ($count%10>=2 && ($count%100<10 || $count%100>=20)) return $forms[1];
+ return $forms[2];
}
}
* @param string $wordform3 (not used)
* @return string
*/
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5 ) {
- return ( ( $count % 10 == 1 ) && ( $count % 100 != 11 ) ) ? $wordform1 : $wordform2;
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ( ( $count % 10 == 1 ) && ( $count % 100 != 11 ) ) ? $forms[0] : $forms[1];
}
# Convert from the nominative form of a noun to some other case
/**
* Use singular form for zero (see bug 7309)
*/
- function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
- return $count <= '1' ? $w1 : $w2;
- }
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 2 );
+
+ return ($count <= 1) ? $forms[0] : $forms[1];
+ }
}
*
*/
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $wordform4, $wordform5) {
- $count=abs($count);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
- if ( $wordform4 && $count <> 1 )
- return $wordform4;
+ $count = abs( $count );
+ if ( isset($forms[3]) && $count != 1 )
+ return $forms[3];
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}
return $word;
}
- function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
- $forms = array( $w1, $w2, $w3);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ( $count == 1 ) {
$index = 0;
} elseif ( $count == 2 || $count == 3 || $count == 4 ) {
return $word; # this will return the original value for 'imenovalnik' (nominativ) and all undefined case values
}
- function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
- $forms = array( $w1, $w2, $w3, $w4, $w5 );
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 5 );
+
if ( $count % 100 == 1 ) {
$index = 0;
} elseif ( $count % 100 == 2 ) {
#--------------------------------------------------------------------------
class LanguageSr_ec extends Language {
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}
#--------------------------------------------------------------------------
class LanguageSr_el extends Language {
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- $count = str_replace ('.', '', $count);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}
return $word;
}
- function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) {
- $count = str_replace (' ', '', $count);
+ function convertPlural( $count, $forms ) {
+ if ( !count($forms) ) { return ''; }
+ $forms = $this->preConvertPlural( $forms, 3 );
+
if ($count > 10 && floor(($count % 100) / 10) == 1) {
- return $wordform3;
+ return $forms[2];
} else {
switch ($count % 10) {
- case 1: return $wordform1;
+ case 1: return $forms[0];
case 2:
case 3:
- case 4: return $wordform2;
- default: return $wordform3;
+ case 4: return $forms[1];
+ default: return $forms[2];
}
}
}