Языковой стандарт не меняется с App :: setLocale, но обновляется в Session :: put () в laravel 5.2

Я работаю над многоязычной поддержкой моего приложения laravel, все материалы, которые он видел в Интернете, говорят о том, что передача языкового стандарта на фасад приложения и вызов метода setLocale переводит веб-сайт, я попробовал это, но не повезло.

В моем файле маршрутов у меня есть это

Route::group(['middleware' => ['web']], function () {
Route::get('change-locale', ['uses' => 'HomeController@changeLocale', 'as' => 'locale.change']);
});

HomeController @ changeLocale У меня есть …

namespace Gudaapp\Http\Controllers;
use Illuminate\Http\Request;

use Gudaapp\Http\Requests;
use Gudaapp\Http\Controllers\Controller;
class HomeController extends Controller
{
public function changeLocale(Request $request) {
if(empty($request->locale)) { redirect()->back()->withMessage('Unknown locale, please, if problem persists, contact admin.'); }
session()->put('locale', $request->locale);
return redirect()->back()->withMessage('Your locale has now been changed to <b>'.$request->locale.'</b>')->withMessageType('success');
}
}

и в представлении, которое отправляет запрос ..

<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
@foreach(config('app.languages') as $locale => $lang)
<li class="{{ session('locale') == $locale ? 'active' : '' }}">
<a href="{!! route('locale.change', ['locale'=> $locale]) !!}" ><img src='{!! asset($lang["flag"]) !!}' alt="" />&nbsp;{{ $lang['language'] }}</a>
</li>
@endforeach
</ul>

Я всегда получаю уведомление, что это было успешно, но App :: getLocale () по-прежнему остается по умолчанию, и, следовательно, веб-сайт не переводится. Мне нужна помощь.

0

Решение

Вы также настраиваете язык из сеанса, когда приложение загружается?
Вы можете сделать это в методе загрузки поставщика услуг, например:

// app/Providers/AppServiceProvider.php
public function boot()
{
$locale = $this->app['session']->get('locale'); // This would be the same as session()->get(... and Session::get(...
$this->app->setLocale($locale); // This would also equal app()->setLocale(... and App::setLocale(...
}

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

0

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

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

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