protected function formatByIntlMoneyFormatter ($valueToFormat = 0.0, $decimalsCount = NULL, $currency = NULL) {
		$formatter = $this->getIntlNumberFormatter(
			$this->langAndLocale,
			\NumberFormatter::CURRENCY,
			NULL,
			($decimalsCount !== NULL
				? [\NumberFormatter::FRACTION_DIGITS => $decimalsCount]
				: [])
		);
		if ($currency === NULL) {
			if ($this->defaultCurrency !== NULL) {
				// try to get default currency
				$currency = $this->defaultCurrency;
			} else {
				// try to get currency from localized formatter
				$currency = \numfmt_get_symbol($formatter, \NumberFormatter::INTL_CURRENCY_SYMBOL);
				if (mb_strlen($currency) !== 3) {
					// try to get currency by system locale settings, by formatting conventions
					if ($this->encodingConversion === NULL) {
						$this->setUpSystemLocaleAndEncodings();
						$this->setUpLocaleConventions();
					}
					$currency = $this->localeConventions->int_curr_symbol;
				}
			}
		}
		return \numfmt_format_currency($formatter, $valueToFormat, $currency);
	}