Tutorial Laravel 11 Localization | Membuat Multi Bahasa di Laravel 11
Published Intermediate

Laravel 11 Localization | Membuat Multi Bahasa di Laravel 11

1 month ago laravel v1.0.0 0
#laravel
Laravel 11 Localization | Membuat Multi Bahasa di Laravel 11
Dalam tutorial ini, saya akan menunjukkan cara menambahkan dukungan multi bahasa menggunakan fitur lokalisasi di aplikasi Laravel 11. Apa itu Laravel Localization? Laravel Localization adalah fitur yang memungkinkan Anda membuat situs web multibahasa. Fitur ini membantu menerjemahkan konten aplikasi ke dalam berbagai bahasa. Dengan Laravel Localization, Anda dapat menyimpan terjemahan dalam file bahasa dan beralih antar bahasa dengan mudah. Fitur ini sangat berguna jika Anda ingin menjangkau pengguna yang berbicara dalam bahasa berbeda, sehingga memberikan pengalaman yang lebih personal. Laravel sudah menyediakan fitur ini secara bawaan, sehingga mudah digunakan. Dalam contoh ini, kita akan: Menginstal Laravel Breeze untuk sistem autentikasi. Menyiapkan file bahasa untuk lokalisasi. Membuat tiga bahasa: Inggris ("en"), Italia ("it"), dan Prancis ("fr"), masing-masing dengan pesan terjemahannya sendiri. Menambahkan dropdown di navigasi agar pengguna bisa memilih bahasa. Mengubah label pada halaman berdasarkan pilihan bahasa pengguna. Mari kita mulai langkah-langkahnya satu per satu. Langkah-langkah Membuat Multi Bahasa di Laravel 11 Langkah 1: Instal Laravel 11 Langkah 2: Instal Laravel Breeze Langkah 3: Buat Migration dan Perbarui Model Langkah 4: Buat Middleware UserAccess Langkah 5: Buat Routes Langkah 6: Perbarui Controller Langkah 7: Buat Blade Files Langkah 8: Perbarui LoginController Langkah 9: Buat User Seeder Jalankan Aplikasi Laravel Dengan mengikuti langkah-langkah ini, Anda dapat menambahkan dukungan multi bahasa ke aplikasi Laravel 11 dan meningkatkan pengalaman pengguna secara signifikan. 🚀

Code Snippets

Terminal

Jadi, pertama kita perlu menjalankan perintah berikut untuk menggunakan lokalisasi:

php
php artisan lang:publish

lang/en/pesan.php

Sekarang, mari kita definisikan pesan untuk bahasa en

php
<?php

return [
    "users" => "Users",
    "users_list" => "Users Listing",
    "dashboard" => "Dashboard",
    "dashboard_message" => "You're logged in!"
];

lang/id/pesan.php

Sekarang, mari kita definisikan pesan untuk bahasa id

php
<?php

return [
    "users" => "Pengguna",
    "users_list" => "Daftar Pengguna",
    "dashboard" => "Dasbor",
    "dashboard_message" => "Anda telah masuk!"
];

Terminal

mari buat middleware menggunakan perintah di bawah ini

php
php artisan make:middleware SetLocale

app/Http/Middleware/SetLocale.php

ubah dengan kode ini

php
<?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);
    }
}

bootstrap/app.php

Berikutnya, kita perlu mendaftarkan middleware SetLocale ke file app.php.

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();

Route/web.php

Di sini, Kami akan menambahkan grup rute berikut tempat Anda dapat membuat rute baru untuk pengguna dan mengubah bahasa. Mari perbarui kode:

php
Route::get('lang', [LanguageController::class, 'change'])->name("change.lang");

Terminal

Di sini, kita akan membuat LanguageController dan UserController baru, lalu memperbarui kedua file kontroler tersebut. Jadi, mari kita tambahkan keduanya sebagai berikut:

php
php artisan make:controller LanguageController
dan juga 
php artisan make:controller UserController

LanguageController

ganti dengan ini

php
<?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();
    }
}

UserController

ganti dengan ini

php
<?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");
    }
}

navbar

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>

Download Tutorial

Format PDF, Video
Last Updated Feb 16, 2025
Download Now

Share this article

About Author

Admin

Admin

admin