- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/httpcontext.php
- Класс: BitrixMainHttpContext
- Вызов: HttpContext::initializeCulture
public function initializeCulture($definedSite = null, $definedLanguage = null): void
{
$request = $this->getRequest();
$language = null;
$culture = null;
$site = null;
if ($definedSite === null && $request->isAdminSection())
{
$lang = $request->get('lang');
if ($lang == '')
{
$lang = ConfigOption::get('main', 'admin_lid', 'ru');
}
if ($lang != '')
{
$language = LocalizationLanguageTable::getList([
'filter' => ['=LID' => $lang, '=ACTIVE' => 'Y'],
'cache' => ['ttl' => static::CACHE_TTL],
])->fetchObject();
}
if (!$language)
{
// no language found - get default
$language = LocalizationLanguageTable::getList([
'filter' => ['=ACTIVE' => 'Y'],
'order' => ['DEF' => 'DESC'],
'cache' => ['ttl' => static::CACHE_TTL],
])->fetchObject();
}
if ($language)
{
$culture = LocalizationCultureTable::getByPrimary($language->getCultureId(), ['cache' => ['ttl' => static::CACHE_TTL]])->fetchObject();
}
}
else
{
if ($definedSite !== null)
{
$site = SiteTable::getByPrimary($definedSite, ['cache' => ['ttl' => static::CACHE_TTL]])->fetch();
if (!$site)
{
throw new SystemException('Incorrect site: ' . $definedSite . '.');
}
}
else
{
// get the site by domain or path
$site = SiteTable::getByDomain($request->getHttpHost(), $request->getRequestedPageDirectory());
}
if ($site)
{
$languageId = $definedLanguage ?? $site['LANGUAGE_ID'];
$language = LocalizationLanguageTable::getByPrimary($languageId, ['cache' => ['ttl' => static::CACHE_TTL]])->fetchObject();
$culture = LocalizationCultureTable::getByPrimary($site['CULTURE_ID'], ['cache' => ['ttl' => static::CACHE_TTL]])->fetchObject();
}
}
if ($culture === null || $language === null)
{
throw new SystemException("Culture not found, or there are no active sites or languages.");
}
$this->setLanguage($language);
$this->setCulture($culture);
if ($site)
{
$this->setSite(SiteTable::wakeUpObject($site));
}
}