• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/localization/translation.php
  • Класс: BitrixMainLocalizationTranslation
  • Вызов: Translation::loadMap
static function loadMap()
{
	if (empty(self::$map))
	{
		$cacheManager = MainApplication::getInstance()->getManagedCache();
		if ($cacheManager->read(static::CACHE_TTL, static::CACHE_ID))
		{
			self::$map = $cacheManager->get(static::CACHE_ID);
		}
	}

	if (empty(self::$map))
	{
		$testForExistence = array(
			'templates',
			'components',
			'activities',
			'wizards',
			'gadgets',
			'js',
			'public/js',
			'blocks',
			'payment',
			'mobileapp',
		);
		$bxRoot = MainApplication::getDocumentRoot(). '/bitrix/modules/';
		$modulesList = new MainIODirectory($bxRoot);
		foreach ($modulesList->getChildren() as $moduleDirectory)
		{
			if ($moduleDirectory->isDirectory())
			{
				$moduleName = $moduleDirectory->getName();
				if (strpos($moduleName, '.') === false || strpos($moduleName, 'bitrix.') === 0)
				{
					self::$map[$moduleName] = array();
					foreach ($testForExistence as $testEntry)
					{
						$testPath = $bxRoot. '/'. $moduleName. '/install/'. $testEntry;
						if ($testEntry === 'templates' || $testEntry === 'mobileapp')
						{
							$testPath .= '/';
						}
						elseif ($testEntry === 'js' || $testEntry === 'public/js')
						{
							$testPath .= '/'. $moduleName. '/';
						}
						elseif ($testEntry === 'payment')
						{
							$testPath = $bxRoot. '/'. $moduleName. '/'. $testEntry;
						}
						else
						{
							$testPath .= '/bitrix/';
						}

						$testDirectory = new MainIODirectory($testPath);
						if ($testDirectory->isExists())
						{
							self::$map[$moduleName][$testEntry] = array();
							foreach ($testDirectory->getChildren() as $testDirectoryEntry)
							{
								if ($testDirectoryEntry->isDirectory())
								{
									if ($testEntry === 'js' || $testEntry === 'public/js')
									{
										self::$map[$moduleName][$testEntry][$moduleName.'/'.$testDirectoryEntry->getName()] = 1;
									}
									else
									{
										self::$map[$moduleName][$testEntry][$testDirectoryEntry->getName()] = 1;
									}
								}
							}
						}
					}
				}
			}
		}

		$cacheManager->set(static::CACHE_ID, static::$map);
	}

	return self::$map;
}