- Модуль: 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;
}