Добрый день!
Я работаю над проектом 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 возвращал мне правильный язык, на который я хотел перейти, но в то время, когда я возвращался на страницу, все снова было со старым языком.
Я схожу с ума от этого, было бы невероятно, чтобы получить некоторую помощь, спасибо!
App::setLocale()
не является постоянным и устанавливает локаль только для текущего запроса.
Что вы можете сделать, это вы можете установить cookie (как вы уже сделали) и проверить его в промежуточный слой. Если есть какой-либо файл cookie, переключите язык приложения.
Других решений пока нет …