π Laravel Multilanguage: Panduan Lengkap Membuat Aplikasi Multi-Bahasa

Bayangkan kamu sedang mengembangkan aplikasi Laravel untuk sebuah startup yang ingin merambah pasar global.
Hari ini pengguna aplikasi kamu berasal dari Indonesia, besok mungkin dari Jepang, dan minggu depan bisa saja dari Amerika.
Masalahnya, bagaimana caranya membuat satu aplikasi Laravel bisa menampilkan bahasa yang berbeda sesuai dengan penggunanya β tanpa membuat project terpisah untuk setiap bahasa?
Jawabannya ada pada Laravel Localization.
Apa Itu Laravel Localization?
Localization atau sering disingkat l10n adalah fitur bawaan Laravel yang memungkinkan kita menerjemahkan teks, label, dan pesan aplikasi ke berbagai bahasa.
Secara default, Laravel menggunakan bahasa Inggris. Tapi dengan menambahkan beberapa file konfigurasi, kamu bisa membuat aplikasi mendukung banyak bahasa seperti Indonesia, Jepang, Jerman, atau lainnya.
Menyiapkan Localization di Laravel
Mari kita mulai dari langkah paling dasar.
1. Atur Bahasa Default
Buka file config/app.php
dan ubah konfigurasi berikut:
'locale' => 'id', // ganti 'id' jika ingin bahasa Indonesia sebagai default
Kalau dibiarkan en
, maka bahasa default aplikasi akan tetap bahasa Inggris.
2. Struktur Folder Bahasa
Laravel menyimpan semua terjemahan di folder resources/lang/
.
Setiap bahasa punya folder sendiri:
resources/lang/
βββ en/
β βββ messages.php
βββ id/
β βββ messages.php
Setiap file di dalam folder berisi array teks yang akan diterjemahkan.
3. Contoh File Terjemahan
Misalnya kita membuat file messages.php
untuk bahasa Inggris dan Indonesia:
resources/lang/en/messages.php
return [
'welcome' => 'Welcome to our website!',
'login' => 'Login',
];
resources/lang/id/messages.php
return [
'welcome' => 'Selamat datang di situs kami!',
'login' => 'Masuk',
];
4. Cara Menampilkan Teks Terjemahan di Blade
Laravel menyediakan dua cara mudah untuk memanggil teks terjemahan:
{{ __('messages.welcome') }}
Atau:
@lang('messages.login')
Hasilnya akan otomatis menyesuaikan bahasa yang sedang digunakan aplikasi.
Mengatur Bahasa Secara Dinamis
Bayangkan kamu punya aplikasi e-commerce dan penggunanya berasal dari berbagai negara. Tentu mereka ingin membaca aplikasi dalam bahasa mereka sendiri.
Laravel memungkinkan kita mengubah bahasa secara dinamis, misalnya lewat tombol, URL, atau preferensi pengguna.
1. Mengatur Locale Secara Langsung
Kalau hanya ingin mengubah bahasa sementara, cukup gunakan:
App::setLocale('id');
Tapi cara ini kurang fleksibel kalau aplikasimu punya banyak pengguna.
Lebih baik gunakan middleware agar bahasa tersimpan per sesi pengguna.
2. Membuat Middleware untuk Bahasa
Buat middleware baru:
php artisan make:middleware SetLocale
Lalu isi dengan logika berikut:
public function handle($request, Closure $next)
{
$locale = session('locale', config('app.locale'));
app()->setLocale($locale);
return $next($request);
}
Daftarkan middleware ini di app/Http/Kernel.php
:
protected $middlewareGroups = [
'web' => [
// middleware bawaan Laravel
\App\Http\Middleware\SetLocale::class,
],
];
3. Mengubah Bahasa Melalui URL
Salah satu cara termudah adalah membuat route untuk ganti bahasa:
Route::get('/lang/{locale}', function ($locale) {
session(['locale' => $locale]);
return redirect()->back();
});
Kemudian tambahkan tombol atau link di Blade:
<a href="{{ url('/lang/en') }}">English</a>
<a href="{{ url('/lang/id') }}">Indonesia</a>
Setiap kali pengguna memilih bahasa, aplikasi akan otomatis menyesuaikan.
Tips Lanjutan untuk Localization
1. Pisahkan File Per Fitur
Daripada menaruh semua teks dalam satu file besar, sebaiknya pisahkan berdasarkan fitur:
resources/lang/en/
βββ auth.php
βββ dashboard.php
βββ messages.php
Struktur seperti ini akan memudahkan pengelolaan teks jika aplikasi semakin besar.
2. Menggunakan Parameter Dinamis
Kadang, kita butuh menampilkan teks yang berbeda untuk setiap pengguna.
Misalnya:
// messages.php
'welcome_user' => 'Welcome, :name!',
Lalu di Blade:
{{ __('messages.welcome_user', ['name' => 'Fadil']) }}
Laravel akan otomatis mengganti :name
dengan nama pengguna.
Kapan Harus Menggunakan Localization?
Laravel Localization cocok dipakai kalau aplikasi kamu:
Menargetkan pengguna dari berbagai negara
Membutuhkan UI multi-bahasa
Digunakan untuk produk SaaS atau aplikasi global
Dengan fitur ini, satu codebase cukup untuk mendukung berbagai bahasa.
Kesimpulan
Fitur Localization di Laravel membuat aplikasi lebih ramah pengguna dan siap digunakan di berbagai negara.
Kamu tidak perlu plugin tambahan atau library eksternal, cukup memanfaatkan fitur bawaan Laravel.
Langkahnya sederhana:
Buat folder bahasa di
resources/lang/
.Tambahkan file terjemahan sesuai kebutuhan.
Tampilkan teks menggunakan
__()
atau@lang()
.Gunakan middleware atau session untuk mengganti bahasa per pengguna.
Dengan pendekatan ini, aplikasi Laravel kamu akan terasa lebih personal, user-friendly, dan siap go internasional.
π§ Artikel Terkait
π¬ Komentar
Im interested
Thanks bang π