На с5.7 переменная конфиг concrete.multilingual.default_locale
сохранен язык по умолчанию для конкретной установки.
На c5-8 мы больше не можем получить доступ к этой переменной. Как я могу получить это значение на новых установках c5-8?
Поскольку concrete5 предоставляет несколько сайтов в одной и той же установке, каждому сайту необходим определенный язык по умолчанию. Поэтому переменная конфигурации локали по умолчанию больше не имеет значения, и локаль по умолчанию хранится в таблице базы данных. sites
,
Доступ к локали по умолчанию для всех определенных сайтов:
$defaultLocales = [];
$sl = new \Concrete\Core\Site\SiteList();
$sites = $sl->get();
foreach ($sites as $site) {
$defaultLocales[$site->getSiteID()] = $site->getDefaultLocale();
}
Далее будет показано, как получить это значение для первого найденного сайта с обратной совместимостью для c5.7.
$defaultLocale = Config::get('concrete.multilingual.default_locale');
if (!$defaultLocale) {
if (class_exists('\Concrete\Core\Site\SiteList')) {
$sl = new \Concrete\Core\Site\SiteList();
$sites = $sl->get();
foreach ($sites as $site) {
$defaultLocale = $site->getDefaultLocale();
break;
}
}
}
Других решений пока нет …