Laravel Localization

Create lang

php artisan lang:publish

Declare messasges

Trong file lang/en/msg.php ta khai báo như sau

 'Locale',
    'about' => 'About'
];

Sử dụng code trên view như sau

{{__('msg.logout')}}

Create Middleware

php artisan make:middleware Localization

Trong Localization ta sử dụng session để kiểm tra

class Localization{
    public function handle(Request $request, Closure $next): Response{
        if(session()->has('locale')){
            App::setLocale(session()->get('locale'));
        }
        return $next($request);
    }
}

Register Localization Middleware

Ta vào đường dẫn boostrap/app.php với nội dung như sau

$middleware->appendToGroup('web', Localization::class);

Thay đổi Localization

Route::get('/home/lang/{locale}', function (Request $req, string $locale) {
    if (! in_array($locale, ['en', 'vi', 'fr'])) {
        abort(400);
    }
    App::setLocale($locale);
    $req->session()->put('locale', $locale);
    return redirect()->back();
});