'available_locales' => [
'English' => 'en',
'Russian' => 'ru',
'French' => 'fr',
],
{
"Welcome to our website": "Добро пожаловать на наш сайт"
}
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;
class Localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (Session::has('locale')) {
App::setLocale(Session::get('locale'));
}
return $next($request);
}
}
web
under $middlewareGroups
of app/http/Kernel.php
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Also change the previous route to:
Route::get('/', function () {
return view('welcome');
});
app/Providers/AppServiceProvider.php
add the following code:
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
{{ __('Welcome to our website, :Name', ['name' => 'amanda']) }}
{
"Welcome to our website, :Name": "Добро пожаловать на наш сайт, :Name"
}
$today = \Carbon\Carbon::now()
->settings(
[
'locale' => app()->getLocale(),
]
);
Labels: Laravel