protected function tryMatch($code, $mws, $gtLanguages, $clLanguages) { if ($mws !== '') { $mwExp = true; $lang = Language::factory($code); } else { $mwExp = false; } if (isset($gtLanguages[$code])) { $gtExp = 'return (int) ' . str_replace('n', '$i', $gtLanguages[$code]) . ';'; } else { $gtExp = false; } if (isset($clLanguages[$code])) { $cldrExp = $clLanguages[$code]; } else { $cldrExp = false; } for ($i = 0; $i <= 250; $i++) { $mw = $gt = $cl = '?'; if ($mwExp) { $exp = $lang->getCompiledPluralRules(); $mw = CLDRPluralRuleEvaluator::evaluateCompiled($i, $exp); } if ($gtExp) { $gt = eval($gtExp); } if ($cldrExp) { $cl = CLDRPluralRuleEvaluator::evaluate($i, $cldrExp); } if (self::comp($mw, $gt) && self::comp($gt, $cl) && self::comp($cl, $mw)) { continue; } return "{$i}: {$mw} {$gt} {$cl}"; } return ''; }
/** * Find the index number of the plural rule appropriate for the given number * @param int $number * @return int The index number of the plural rule */ public function getPluralRuleIndexNumber($number) { $pluralRules = $this->getCompiledPluralRules(); $form = CLDRPluralRuleEvaluator::evaluateCompiled($number, $pluralRules); return $form; }
/** * Find the plural form matching to the given number * It return the form index. * @return int The index of the plural form */ private function getPluralForm($number) { $pluralRules = $this->getCompiledPluralRules(); $form = CLDRPluralRuleEvaluator::evaluateCompiled($number, $pluralRules); return $form; }