Try this way
1. When user choose a language we put our selected locale(language) in session [example en, fr, hi ]
Route::get('setlocale/{locale}',function($lang){
\Session::put('locale',$lang);
return redirect()->back();
});
2. We use a middleware for translating pages according to our session locale (user selected)
<?php
namespace App\Http\Middleware;
use Closure;
use Session;
use App;
use Config;
class LanguageSwitcher
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!Session::has('locale'))
{
Session::put('locale', Config::get('app.locale'));
}
App::setLocale(Session::get('locale'));
return $next($request);
}
}
3. We put this middleware in kernel.php routeMiddleware (app/Http/kernel.php)
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'language' => \App\Http\Middleware\LanguageSwitcher::class,
];
'language' => \App\Http\Middleware\LanguageSwitcher::class,
4. For serving this middleware we need route group. so each request goes through this middleware
Route::group(['middleware'=>'language'],function ()
{
//your translation routes
});
Logic in middleware
In middleware for every request we check if locale set in current session or not.
if Session not having locale then for current request we set locale to config locale means in your app configuration locale
'locale' => 'en', // config/app.php
Session::put('locale',Config::get('app.locale')); // in middleware code we use Config method to get app configuration locale
App::setLocale(Session::get('locale')); // finally set this to App locale
else if we have locale in current session then we set that to App locale
App::setLocale(Session::get('locale')); // set this to App locale
Complete Article and Source Code - www.ultimateakash.com
config/app.php
change the'locale'
value as you want. – Sickener