Laravel Language Picker

Добрый день! Я работал над проектом Laravel, и я схожу с ума от выбора языка.

Я установил на мой app.php локаль, которая является текущим языком, и массив с именем локали, где у меня есть все языки (испанский и английский сейчас):

'locale' => 'es',

'locales' => [
    'en' => 'English',
    'es' => 'Castellano',
],

Я создал маршрут, к которому пользователь может получить доступ, чтобы изменить язык с помощью шаблона. /lang/es или же /lang/en сюда:

Route::get('/lang/{lang}', ['as'=>'lang.switch', 'uses'=>'HomeController@storeLang']);

А вот и функция storeLang:

    public function storeLang($lang){
        $cookie = null;

        if (array_key_exists($lang, Config::get('app.locales'))) {
            $cookie = Cookie::forever('locale', $lang);
            //App::setLocale($lang);
            var_dump(Config::get('app.locale'));
            exit();
        }

        if ($cookie) {
            return Redirect::back()->withCookie($cookie);
        }

        return back(); 
    }
}

Моя идея состояла в том, чтобы проверить, корректен ли $ lang, который мы передаем, и если да, создать cookie, который будет длиться вечно с сохраненным языком, но это не заставит изменить язык, я полагаю, что мне нужно что-то добавить, потому что это var_dump не возвращает мне измененный язык, и я не знаю, как создать cookie для изменения локали.

С другой стороны, как вы можете видеть, я прокомментировал App::setLocale($lang). Я использовал его, и, похоже, это сработало, потому что в этом случае var_dump возвращал мне нужный язык, на который я хотел перейти, но в то время, когда я возвращался на страницу, все снова было со старым языком.

Я схожу с ума от этого, было бы невероятно, чтобы получить некоторую помощь, спасибо!

1 ответ

Решение

App::setLocale() не является постоянным и устанавливает локаль только для текущего запроса.

Что вы можете сделать, так это установить cookie (как вы уже сделали) и проверить его в промежуточном программном обеспечении. Если есть какой-либо файл cookie, переключите язык приложения.

Другие вопросы по тегам