Jadi, pertama kita perlu menjalankan perintah berikut untuk menggunakan lokalisasi:
php artisan lang:publish
Sekarang, mari kita definisikan pesan untuk bahasa en
<?php
return [
"users" => "Users",
"users_list" => "Users Listing",
"dashboard" => "Dashboard",
"dashboard_message" => "You're logged in!"
];
Sekarang, mari kita definisikan pesan untuk bahasa id
<?php
return [
"users" => "Pengguna",
"users_list" => "Daftar Pengguna",
"dashboard" => "Dasbor",
"dashboard_message" => "Anda telah masuk!"
];
mari buat middleware menggunakan perintah di bawah ini
php artisan make:middleware SetLocale
ubah dengan kode ini
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\App;
class SetLocale
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
if($request->session()->has('locale')){
App::setLocale($request->session()->get('locale', 'en'));
}
return $next($request);
}
}
Berikutnya, kita perlu mendaftarkan middleware SetLocale ke file app.php.
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->web(append: [
SetLocale::class
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Di sini, Kami akan menambahkan grup rute berikut tempat Anda dapat membuat rute baru untuk pengguna dan mengubah bahasa. Mari perbarui kode:
Route::get('lang', [LanguageController::class, 'change'])->name("change.lang");
Di sini, kita akan membuat LanguageController dan UserController baru, lalu memperbarui kedua file kontroler tersebut. Jadi, mari kita tambahkan keduanya sebagai berikut:
php artisan make:controller LanguageController
dan juga
php artisan make:controller UserController
ganti dengan ini
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class LanguageController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function change(Request $request)
{
$lang = $request->lang;
if (!in_array($lang, ['en', 'it', 'fr'])) {
abort(400);
}
Session::put('locale', $lang);
return redirect()->back();
}
}
ganti dengan ini
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function index()
{
return view("users");
}
}
pangil route dengan
<div class="mt-2 space-y-2">
<a href="{{ route('change.lang', ['lang' => 'en'])}}"
class="block w-full px-4 py-2 text-sm text-center {{ App::getLocale() === 'en' ? 'bg-blue-500 text-white' : 'bg-gray-100 text-gray-700' }} rounded-md hover:opacity-90">
🇬🇧 English
</a>
<a href="{{ route('change.lang', ['lang' => 'id']) }}"
class="block w-full px-4 py-2 text-sm text-center {{ App::getLocale() === 'id' ? 'bg-blue-500 text-white' : 'bg-gray-100 text-gray-700' }} rounded-md hover:opacity-90">
🇲🇾 Bahasa Melayu
</a>
</div>
admin