public function choose($number, array $variants, $locale = null) {
		if ($locale === null) {
			$locale = $this->getLocale();
		} else {
			$locale = $this->normalizeLocale($locale);
		}
		
		if (! isset(self::$rulesMap[$locale])) {
			$position = 0;
		} else {
			$rule     = self::$rulesMap[$locale];
			$position = $this->$rule((int) $number);
		}
		
		if (! isset($variants[$position])) {
			throw new InvalidOptions('There is no variant by position: "' . $position . '"');
		}
		
		return $variants[$position];
	}