newInstance($cookies); $this->sessionSegment = $session->getSegment(self::class); $cookieLocale = $this->sessionSegment->get('locale'); if (isset($cookieLocale)) { $this->setLocale(new Locale($cookieLocale)); } bindtextdomain('Alltube', __DIR__.'/../i18n/'); textdomain('Alltube'); } /** * Get a list of supported locales. * * @return Locale[] */ public function getSupportedLocales() { $return = []; $process = new Process(['locale', '-a']); $process->run(); $installedLocales = explode(PHP_EOL, trim($process->getOutput())); foreach ($this->supportedLocales as $supportedLocale) { if (in_array($supportedLocale, $installedLocales) || in_array($supportedLocale.'.utf8', $installedLocales) ) { $return[] = new Locale($supportedLocale); } } return $return; } /** * Get the current locale. * * @return Locale|null */ public function getLocale() { return $this->curLocale; } /** * Set the current locale. * * @param Locale $locale Locale */ public function setLocale(Locale $locale) { putenv('LANG='.$locale); setlocale(LC_ALL, [$locale.'.utf8', $locale]); $this->curLocale = $locale; $this->sessionSegment->set('locale', $locale); } /** * Unset the current locale. */ public function unsetLocale() { $this->curLocale = null; $this->sessionSegment->clear(); } }