如何在早期获得默认语言环境

How to get the default locale on early stage

在 c5.7 上,配置变量 concrete.multilingual.default_locale 存储了 concrete5 安装的默认语言环境。 在 c5-8 上我们不能再访问这个变量了。我怎样才能在新的 c5-8 安装上获得这个值?

由于 concrete5 在同一个安装中提供多个站点,每个站点都需要特定的默认语言。因此,默认语言环境配置变量不再有意义,默认语言环境存储在数据库中 table 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;
        }
    }
}

来源:concrete/src/Entity/Site/Site