Membuat Website Multi Language dengan Laravel

Ketika kita membuat sebuah website yang akan banyak diakses oleh pengguna dari berbagai negara. Maka salah satu fitur yang wajib ada adalah fitur multi language atau multi bahasa, fitur ini mungkin bisa kita skip jika kita membuat sebuah aplikasi dalam bahasa Inggris, tapi ketika kita ingin lebih spesifik menargetkan user dari negara-negara tertentu (Misal: Indonesia, Arab atau China) maka saya rasa fitur ini sudah sangat wajib sekali untuk ada.

Di Laravel, untuk membuat fitur multi language ini kita bisa menggunakan fitur bawaan Laravel bernama Localization.

Contoh kasus kali ini kita akan membuat satu halaman seperti dibawah, abaikan tampilannya yang terlalu polos, kita fokus ke Localization-nya saja 😀 Walaupun pada contoh kasus kita hanya akan mencoba di 1 halaman, jika kita faham maka untuk implementasi di halaman lain tidak akan sulit.

Oh iya, jika teman-teman ingin cek source code yang sudah jadi, saya share juga disini.

Persiapan

Pertama, siapkan project laravel seperti biasa dengan menjalankan perintah dibawah pada Terminal:

composer create-project laravel/laravel multilanguage

Pada contoh ini saya menggunakan Laravel 5.8, jadi jika suatu saat nanti Laravel sudah update Major (Apa itu Major? Silahkan baca-baca Mengenal Semantic Versioning) dan tutorial ini jadi tidak jalan. Silahkan kabari saya untuk saya update artikelnya.

Oh iya saya asumsikan teman-teman sudah faham basic Laravel ya mulai dari Controller, Route, Middleware, View, dsb.

Membuat Halaman Depan

Setelah selesai inisiasi project-nya, selanjutnya kita akan membuat/mengubah halaman depan dengan mengubah file menjadi seperti ini:

Coba kita perhatikan baris 32, disitu kita memanggil __('home.title') , itu adalah helper untuk memanggil teks yang ada di file resources/lang/{locale-code}/home.php dengan key title.

Jika sekarang kita buka halamannya maka hanya akan tampil seperti ini:

Selanjutnya adalah kita harus membuat file resources/lang/en/home.php dengan isi sebagai berikut:

Jika kita refresh halaman tadi, maka sekarang akan menjadi seperti ini:

Menyiapkan Bahasa baru

Mungkin akan muncul pertanyaan:

Kenapa direktorinya mengarah ke resources/lang/en/namafile.php, kenapa harus en?

Jawabannya adalah karena konfigurasi default locale di fileconfig/app.php adalah en.

Maka untuk menambahkan bahasa baru, kita cukup membuat direktori untuk bahasa baru yang akan kita tambahkan. Karena pada contoh tutorial kali ini kita akan menambahkan Bahasa Indonesia, maka tinggal copy saja folder en tadi dengan nama folder id.

Kemudian ubah file resources/lang/id/home.php menjadi seperti ini:

Kemudian ubah nilai locale di file config/app.php tadi menjadi id.

Sampai sini silahkan coba refresh halaman tadi, jika tidak ada masalah maka akan berubah menjadi Bahasa Indonesia seperti ini.

Membuat Fitur Switch Language

Nah selanjutnya adalah kita membuat fitur switch language atau pindah bahasa. Inti pada bagian ini adalah kita harus mengubah value locale yang ada di config/app.php tadi menjadi sesuai dengan locale/bahasa yang dipilih. Dan nilai locale yang dipilih user akan kita simpan di session.

Pertama kita harus membuat code untuk menyimpan nilai locale yang dipilih oleh user ke session.

Buat controller dengan menjalankan perintah dibawah pada Terminal:

php artisan make:controller LocalizationController

Kemudian tambahkan method untuk switch language seperti dibawah:

Jangan lupa tambahkan juga di Route:

Selanjutnya adalah kita harus membuat Middleware untuk set nilai locale yang ada di config tadi.

Jalankan perintah dibawah di Terminal:

php artisan make:middleware LocalizationMiddleware

Kemudian kita ubah file app/Http/Middleware/LocalizationMiddleware.php menjadi seperti ini:

Kita registrasi Middleware diatas dan 1 Middleware lain ke Global Middleware di app/Http/Kernel.php (perhatikan baris 22 dan 23).

Selanjutnya kita tambahkan link/menu untuk switch language tadi, terserah teman-teman ingin menyimpannya dimana. Pada contoh disini kita akan menambahkan pada navbar di bagian kanan atas. Silahkan ubah file welcome.blade.php menjadi seperti ini (perhatikan baris 25 dan 26):

Fungsi app()->getLocale() diatas adalah untuk mendapatkan locale yang sedang aktif.

Testing

Jika tidak ada masalah, harusnya semua berjalan seperti pada gambar dibawah:

Selanjutnya Apa?

Selanjutnya adalah silahkan implementasi di halaman lain, oh iya pada folder tadi kita lihat juga ada banyak file lain seperti auth.php, pagination.php, passwords.php dan validation.php. Silahkan ubah isinya sesuai dengan yang diinginkan.

Jika ingin menambahkan bahasa lain, silakan untuk lakukan hal yang sama lagi seperti diatas.

Penutup

Sekian artikel kali ini, mohon maaf jika ada kekurangan. Bila ada yang kurang jelas silahkan untuk berkomentar pada kolom komentar dibawah.

Terima kasih 🙂

Originally published at https://azishapidin.com on August 2019.

--

--

--

Seorang Software Developer dengan expertise sebagai Backend Developer, sering membuat REST API dan juga Web-Based Application (Full-Stack)

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Azis Hapidin

Azis Hapidin

Seorang Software Developer dengan expertise sebagai Backend Developer, sering membuat REST API dan juga Web-Based Application (Full-Stack)

More from Medium

Stripe ACH implementation in laravel

Laravel: The Best PHP Framework for Building Modern Web Apps

Mac M1 Laravel 9 from Scratch

Sharing data to all view Laravel Blade