Tutorial Membuat Fitur Multi Bahasa di Laravel

Membuat fitur multi bahasa di Laravel dengan memanfaatkan fitur built-in.

Mar 5, 2021
Tutorial Membuat Fitur Multi Bahasa di Laravel

Terkadang pada halaman website atau aplikasi, kita perlu menghadirkan sebuah fitur untuk pengguna agar bisa mengubah bahasa sesuai dengan keinginan. Fitur ini bisa disebut dengan multi language atau multi bahasa. Kali ini saya akan membagikan bagaimana cara membuat fitur multi language atau multi bahasa ini di laravel.

 

Laravel secara out-of-the-box sudah menyediakan fitur ini, yaitu localization. Fungsi utama dari localization ini ialah untuk memberikan response form validation ketika kita mengirim sebuah request. Selain itu juga bisa kita manfaatkan untuk bahasa di antarmuka aplikasi kita. Untuk mengaturnya, kita bisa mengubah konfigurasi bahasa secara manual di folder config dan harus menyediakan file lang nya di folder resources/lang.

 

Lalu, bagaimana cara membuat fitur multi language ini tanpa kita mengubahnya secara manual di file config locale laravel? Mari kita mulai

 

Menyiapkan Project Laravel

Pertama, kita harus menyiapkan file lang ke folder resources/lang. Kita bisa mendapatkannya di repo github ini. Cukup copy folder bahasa yang kita inginkan di direktori src ke folder resources/lang di project laravel kita. Di sini saya ingin menggunakan bahasa indonesia (id).

├── lang                                                                                                                
│   ├── en                                                                                                              
│   │   ├── auth.php                                                                                      
│   │   ├── pagination.php                                                                                              
│   │   ├── passwords.php                                                                                           
│   │   └── validation.php                                                                                              
│   └── id                                                                                                              
│       ├── auth.php                                                                                                   
│       ├── pagination.php                                                                                              
│       ├── passwords.php                                                                                          
│       └── validation.php   

 

Middleware

Selanjutnya kita harus membuat sebuah middleware yang bertugas untuk menerapkan pengaturan bahasa yang harus digunakan di laravel kita dengan memanfaatkan session.

Sekarang, mari kita buat sebuah middleware

~$ php artisan make:middleware LanguageMiddleware

 

Lalu file class middleware akan terbuat di folder `app\Http\Middleware`. Buka file tersebut dan tambahkan script berikut di dalam method `handle`.

...
public function handle($request, Closure $next)
{
        $locale = Session::get('app_locale');
        if (empty($locale)) {
            $locale = $this->getVisitorLocale($request->ip());
            Session::put('app_locale', $locale);
        }

        App::setlocale($locale);

        return $next($request);
}
...

 

Jangan lupa untuk meng-import facade App dan Session yang kita gunakan di method tersebut

...
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;
...

 

Selanjutnya, kita register middleware kita tersebut di route middleware laravel. Buka file app\Http\Kernel.php lalu tambahkan LanguageMiddleware tersebut ke dalam property $routeMiddleware.

...
protected $routeMiddleware = [
        ...
        'lang' => App\Http\Middleware\LanguageMiddleware::class
];
...

 

Controller dan Route

Buat controller dan routing untuk kita mengaplikasikan pengaturan bahasa yang di-request dari user.

~$ php artisan make:controller LanguageController

 

Lalu buatlah fungsi untuk menyimpan session bahasa sesuai dengan apa yang kita buat pada LanguageMiddleware.

 

 

Lalu pada route/web.php kita bisa menambahkan script sepert ini

Route::get('lang/{locale}', [LanguageController::class, 'changeTheLanguage']);

 

Import juga class controller LanguageController di bagian atas

use App\Http\Controllers\LanguageController;

 

Dan jangan lupa untuk menambahkan middleware 'lang' pada routes kita agar fitur bahasa ini berjalan pada semua url yang kita inginkan.

...
Route::group([
    'middleware' => 'lang'
], function() {
...

 

Tombol Pengubah Bahasa di Front-end

Di sisi backend sudah siap, project laravel kita tersebut sudah bisa menghandle atau mengerti kita akan menggunakan bahasa apa. Lalu selanjutnya kita buat tombol/menu selector bahasa untuk user bisa memilih bahasa yang diinginkan.

 

Sampai di sini, fitur bahasa sudah selesai. Lalu, bagaimana cara menggunakannya di blade template atau menampilkan kata atau kalimat yang sesuai? Untuk melakukan hal tersebut kita harus menggunakan function khusus yaitu {{ __('Your Lang Here') }}

Jadi, misalkan kita ingin menampilkan bahasa previous / sebelumnya, maka kita bisa menampilkannya dengan menggunakan kode berikut

 

{{ __('pagination.previous') }}

 

Karena data bahasa dari previous ada di file lang/pagination.php

Jika key tersebut tidak ada, maka laravel akan menampilkan string yang ada di dalam fungsi tersebut.

 

Kesimpulan

Fitur multi bahasa atau multi-lang merupakan fitur yang cukup penting, agar pengguna kita lebih leluasa dalam memilih prefensi bahasa antar muka (user interface) pada website/aplikasi kita. Laravel secara out-of-the-box sudah mendukung fitur ini, kita tinggal memanfaatkan komponen-komponen yang telah disediakan.

 

---

Jika ada menyukai postingan saya ini, jangan ragu untuk membagikannya di sosial media. :)

Terima kasih atas

Bagikan :