public function setLanguage($value)
{
// get the possible languages
$possibleLanguages = Language::getActiveLanguages();
// validate
if (!in_array($value, $possibleLanguages)) {
// only 1 active language?
if (!Model::getContainer()->getParameter('site.multilanguage') && count($possibleLanguages) == 1) {
$this->language = array_shift($possibleLanguages);
} else {
// multiple languages available but none selected
throw new Exception('Language invalid.');
}
} else {
// language is valid: set property
$this->language = (string) $value;
}
// define constant
defined('FRONTEND_LANGUAGE') || define('FRONTEND_LANGUAGE', $this->language);
defined('LANGUAGE') || define('LANGUAGE', $this->language);
// set the locale (we need this for the labels)
Language::setLocale($this->language);
}