/** * Инициализация модуля * */ 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(); }
/** * Инициализация модуля * */ 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(); }
/** * Если загружена конфигурация, то возвращает корневой 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; }