• Модуль: translate
  • Путь к файлу: ~/bitrix/modules/translate/lib/file.php
  • Класс: BitrixTranslateFile
  • Вызов: File::load
public function load(): bool
{
	$this->messages = [];
	$this->messageCodes = [];
	$this->messagesCount = 0;

	if (!$this->isExists() || !$this->isFile() || ($this->getExtension() !== 'php'))
	{
		return false;
	}

	// language id
	$langId = $this->getLangId();
	if (empty($langId))
	{
		$this->addError(new MainError('Language Id must be filled'));
		return false;
	}

	$content = $this->getContents();
	if (
		empty($content)
		|| !is_string($content)
		|| $content === 'addError(new MainError('Empty content', 'EMPTY_CONTENT'));
		return false;
	}

	// encoding
	$targetEncoding = $this->getOperatingEncoding();
	$sourceEncoding = $this->getSourceEncoding();
	$convertEncoding = (mb_strtolower($targetEncoding) != mb_strtolower($sourceEncoding));
	if ($convertEncoding)
	{
		$path = MainLocalizationTranslation::convertLangPath($this->getPhysicalPath(), $this->getLangId());

		if (MainLocalizationTranslation::getDeveloperRepositoryPath() !== null)
		{
			$convertEncoding = (stripos($path, MainLocalizationTranslation::getDeveloperRepositoryPath()) === 0);
		}
		if (!$convertEncoding && MainLocalizationTranslation::useTranslationRepository())
		{
			$convertEncoding = (stripos($path, MainLocalizationTranslation::getTranslationRepositoryPath()) === 0);
		}
	}

	$messages = (function(){
		if (isset($GLOBALS['MESS']))
		{
			unset($GLOBALS['MESS']);
		}

		$MESS = [];
		ob_start();
		include $this->getPhysicalPath();
		ob_end_clean();

		return $MESS;
	})();

	if (is_array($messages) && count($messages) > 0)
	{
		foreach ($messages as $phraseId => $phrase)
		{
			if ($convertEncoding)
			{
				$phrase = MainTextEncoding::convertEncoding($phrase, $sourceEncoding, $targetEncoding);
			}

			$this->messages[$phraseId] = $phrase;
			$this->messageCodes[] = $phraseId;
			$this->messagesCount ++;
		}
	}

	return true;
}