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 ($ Ланг) прокомментировал. Я использовал это, и это, казалось, работало, потому что в этом случае var_dump возвращал мне правильный язык, на который я хотел перейти, но в то время, когда я возвращался на страницу, все снова было со старым языком.

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

1

Решение

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

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]