Пример #1
0
 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');
 }