['locale' => 'de_DE', 'name' => 'Deutsch'], ... * * @property \Cake\Controller\Component\FlashComponent $Flash */ class ShuntRequestController extends AppController { /** * @var string|null */ protected $modelClass = ''; /** * @return void */ public function initialize(): void { parent::initialize(); if (!isset($this->Flash)) { $this->loadComponent('Flash'); } } /** * Switch language as post link. * * @param string|null $language * @throws \RuntimeException * @return \Cake\Http\Response */ public function language($language = null) { $this->getRequest()->allowMethod(['post']); $allowedLanguages = (array)Configure::read('Config.allowedLanguages'); if (!$language) { $language = Configure::read('Config.defaultLanguage'); } if (!$language && $allowedLanguages) { $keys = array_keys($allowedLanguages); $language = $allowedLanguages[array_shift($keys)]; } if (!array_key_exists($language, $allowedLanguages)) { throw new RuntimeException('Invalid Language'); } $language = $allowedLanguages[$language]; $this->getRequest()->getSession()->write('Config.language', $language['locale']); I18n::setLocale($language['locale']); $this->Flash->success(__d('tools', 'Language switched to {0}', $language['name'])); return $this->redirect($this->referer('/', true)); } }