1 – Trong thư mục resource tạo file ngôn ngữ
/resources
/lang
/en
messages.php
/vi
messages.php
2 – Trong file route web.php tạo 1 route để thực hiện thiết lập locate
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;
Route::get('/lang/{locale}', function ($locale) {
if (! in_array($locale, ['en', 'vi'])) {
abort(400);
}
App::setLocale($locale);
Session::put('lang', $locale);
return redirect()->back();
});
3 – Tạo midlware để thực hiện thiết lập locate:
Chạy lệnh: php artisan make:middleware Localization
4 – Vào file Kelnel.php thêm route midlware
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'admin' => \App\Http\Middleware\GoToAdminPage::class,
'localization' => \App\Http\Middleware\Localization::class, // thêm dòng này
];
5 – Vào file Localization.php sửa hàm handle như sau
public function handle(Request $request, Closure $next)
{
$locale = Session::get('lang', config('app.locale'));
if (! in_array($locale, ['en', 'vi'])) {
abort(400);
}
App::setLocale($locale);
return $next($request);
}
6 – Đặt tất cả các route cần dùng đa ngôn ngữ vào trong group
Route::group(['middleware' => 'localization'], function () {
//---- cac route đa ngôn ngữ phải đặt trong này
Route::get('/tool/md5.html', [ToolController::class,'Md5'])->name('frontend.tool.md5');
});
7 – Trên giao diện web làm thêm cái cờ để đổi ngôn ngữ:
https://www.flaticon.com/free-icon/south-korea_330591?related_id=330591#
<a href="/lang/en"><img src="/assets/img/uk.png" style="width:16px" /> English</a>
<a href="/lang/vi"><img src="/assets/img/vi.png" style="width:16px" /> Vietnamese</a>
8 – Trên các view dùng cấu trúc translate sau để dịch ngôn ngữ
{{__(‘tool.title_md5_generator’)}}
Cái chữ tool. Màu xanh là tên file ngôn ngữ được tạo trong thư mục lang/
OK đã xong, giờ trải nghiệm thử nhé.