public function setLanguage($language, $setAsDefault = false) { if (!Validate::isLanguage($language)) { throw new \Exception('Invalid lang format'); } Logger::getInstance()->debug('Try load language : "' . $language . '"', 'language'); //check datas files $file = self::getDatasPath() . $language . '.xml'; if (!file_exists($file)) { if (!$setAsDefault) { Logger::getInstance()->debug('Invalid lang : "' . $language . '", have not xml datas file', 'language'); return; } throw new \Exception('Invalid lang : "' . $language . '", have not xml datas file'); } $xml = simplexml_load_file($file); if (is_null($xml) || !$xml) { throw new \Exception('Invalid lang : "' . $language . '" invalid xml file'); } Logger::getInstance()->debug('Load datas file : "' . $file . '"', 'language'); //delete comment unset($xml->comment); // set language self::$_languageVars = $xml; $this->_language = $language; if ($setAsDefault) { $this->_defaultLanguage = $this->_language; self::$_defaultLanguageVars = self::$_languageVars; Logger::getInstance()->debug('Language : "' . $this->_language . '" defined as default', 'language'); } //Check if alls vars defined if ($this->_defaultLanguage != $this->_language) { foreach (self::$_defaultLanguageVars as $name => $value) { if (!property_exists(self::$_languageVars, $name)) { Logger::getInstance()->debug('Miss language var : "' . $name . '" on new language : "' . $language . '"', 'language'); // restore var, by default language self::$_languageVars->{$name} = self::$_defaultLanguageVars->{$name}; } } } Logger::getInstance()->debug('Current language is : "' . $this->_language . '"', 'language'); }