Example #1
0
 /**
  * Инициализация модуля
  *
  */
 public function Init()
 {
     E::ModuleHook()->Run('lang_init_start');
     $this->sDefaultLang = Config::Get('lang.default');
     $this->aLangPaths = F::File_NormPath(Config::Get('lang.paths'));
     // Проверку на языки делаем, только если сайт мультиязычный
     if (Config::Get('lang.multilang')) {
         // Время хранение языка в куках
         $nSavePeriod = F::ToSeconds(Config::Get('lang.save'));
         $sLangKey = is_string(Config::Get('lang.in_get')) ? Config::Get('lang.in_get') : 'lang';
         // Получаем язык, если он был задан в URL
         $this->sCurrentLang = R::GetLang();
         // Проверка куки, если требуется
         if (!$this->sCurrentLang && $nSavePeriod) {
             $sLang = (string) E::ModuleSession()->GetCookie($sLangKey);
             if ($sLang) {
                 $this->sCurrentLang = $sLang;
             }
         }
         if (!$this->sCurrentLang) {
             $this->sCurrentLang = Config::Get('lang.current');
         }
     } else {
         $this->sCurrentLang = Config::Get('lang.current');
     }
     // Проверяем на случай старого обозначения языков
     $this->sDefaultLang = $this->_checkLang($this->sDefaultLang);
     $this->sCurrentLang = $this->_checkLang($this->sCurrentLang);
     if ($this->sCurrentLang && Config::Get('lang.multilang') && $nSavePeriod) {
         // Пишем в куки, если требуется
         E::ModuleSession()->SetCookie($sLangKey, $this->sCurrentLang, $nSavePeriod);
     }
     $this->InitLang();
 }
Example #2
0
 /**
  * Инициализация модуля
  *
  */
 public function Init()
 {
     E::ModuleHook()->Run('lang_init_start');
     $this->sDefaultLang = Config::Get('lang.default');
     $this->aLangPaths = F::File_NormPath(Config::Get('lang.paths'));
     $this->bDeleteUndefinedVars = Config::Get('module.lang.delete_undefined');
     // Allowed languages
     $aLangsAllow = (array) Config::Get('lang.allow');
     // Проверку на языки делаем, только если сайт мультиязычный
     if (Config::Get('lang.multilang')) {
         // Время хранение языка в куках
         $iSavePeriod = F::ToSeconds(Config::Get('lang.save'));
         $sLangKey = is_string(Config::Get('lang.in_get')) ? Config::Get('lang.in_get') : 'lang';
         // Получаем язык, если он был задан в URL
         $this->sCurrentLang = R::GetLang();
         // Проверка куки, если требуется
         if (!$this->sCurrentLang && $iSavePeriod) {
             $sLang = (string) E::ModuleSession()->GetCookie($sLangKey);
             if ($sLang) {
                 $this->sCurrentLang = $sLang;
             }
         }
         if (!$this->sCurrentLang) {
             $this->sCurrentLang = Config::Get('lang.current');
         }
     } else {
         $this->sCurrentLang = Config::Get('lang.current');
         $iSavePeriod = 0;
         $sLangKey = null;
     }
     // Current language must be in allowed languages
     if (!in_array($this->sCurrentLang, $aLangsAllow)) {
         $this->sCurrentLang = reset($aLangsAllow);
     }
     // Проверяем на случай старого обозначения языков
     $this->sDefaultLang = $this->_checkLang($this->sDefaultLang);
     $this->sCurrentLang = $this->_checkLang($this->sCurrentLang);
     if ($this->sCurrentLang && Config::Get('lang.multilang') && $iSavePeriod) {
         // Пишем в куки, если требуется
         E::ModuleSession()->SetCookie($sLangKey, $this->sCurrentLang, $iSavePeriod);
     }
     $this->InitLang();
 }
Example #3
0
 /**
  * Если загружена конфигурация, то возвращает корневой URL проекта,
  * в противном случае - адрес веб-сайта выполняемого приложения
  *
  * @param mixed $xAddLang
  *
  * @return string|null
  */
 public static function RootUrl($xAddLang = false)
 {
     if (!empty(self::$_root['url'][$xAddLang])) {
         $sUrl = self::$_root['url'][$xAddLang];
     } elseif (class_exists('Config', false) && ($sUrl = Config::Get('path.root.url'))) {
         // Если требуется, то добавляем в URL язык
         if ($xAddLang && Config::Get('lang.in_url') && class_exists('Router', false)) {
             // Если строковый параметр, то это язык
             if (is_string($xAddLang)) {
                 $sLang = $xAddLang;
             } else {
                 // иначе язык берем из роутера
                 $sLang = R::GetLang();
             }
             if ($sLang) {
                 $sUrl = static::NormPath($sUrl . '/' . $sLang . '/');
             }
         }
         self::$_root['url'][$xAddLang] = $sUrl;
     } elseif (isset($_SERVER['HTTP_HOST'])) {
         $sUrl = F::UrlScheme(true) . $_SERVER['HTTP_HOST'];
     } else {
         $sUrl = null;
     }
     if ($sUrl && substr($sUrl, -1) != '/') {
         $sUrl .= '/';
     }
     return $sUrl;
 }