protected function _initLanguages() { $this->languages = \Languages::findByPublished(true); if (sizeof($this->languages) < 2) { $this->currentLang = $this->languages[0]; return; } $currentLangCode = $this->request()->get('lang'); if (!$currentLangCode) { $currentLangCode = Factory::getCookie()->read('lang'); } if (!$currentLangCode) { $this->currentLang = \Languages::findOneByDefault(true); $currentLangCode = $this->currentLang->getLangCode(); } Factory::getCookie()->write('lang', $currentLangCode); if (Factory::getRouter()->getUrl() == '/' && !$this->request()->get('lang')) { $this->redirect($currentLangCode); } if (!$this->currentLang) { $this->currentLang = \Languages::findOneByLangCode($currentLangCode); } $translator = Translator::getInstance(); $translator->setLocale($currentLangCode); Cms::$currentLang = $this->currentLang; }
public static function route($r) { $languages = \Languages::findByPublished(true); if (sizeof($languages) > 1) { $preLang = array(); foreach ($languages as $lang) { $preLang[] = $lang->getLangCode(); } $preLang = '{lang:(' . implode('|', $preLang) . ')}'; $nr = array(); foreach ($r as $route => $value) { if ('/' == $route) { $nr[$route] = $value; } $nr[$route] = $value; if (strpos($route, '__') !== 0 && strpos($route, $preLang) !== 0) { $nr[$preLang . '/' . ltrim($route, '/')] = $value; } } $r = $nr; } return $r; }
public function begin() { $this->languages = Languages::findByPublished(1); }