/** * switch the language */ public function switchLanguage($culture) { $supported_cultures = LanguageTable::getAllLanguageCodesAsArray(true); if (in_array($culture, $supported_cultures)) { $this->setCulture($culture); } else { $this->setCulture(LanguageTable::getDefaultLanguage()); } $this->setAttribute('culture_set', true); }
public function execute($filterChain) { // Execute this filter only once if ($this->isFirstCall()) { $sfUser = $this->getContext()->getUser(); // check if user is authenticated if (!$sfUser->isAuthenticated() && !$sfUser->getAttribute('culture_set')) { $languages = $this->getContext()->getRequest()->getLanguages(); foreach ($languages as $lang) { $lang = substr($lang, 0, 2); // check if a used language is supported by communipedia if (in_array($lang, LanguageTable::getAllLanguageCodesAsArray(true))) { $sfUser->setCulture($lang); break; } else { $sfUser->setCulture(LanguageTable::getDefaultLanguage()); } } $sfUser->setAttribute('culture_set', true); } } // Execute next filter $filterChain->execute(); }