tutorial laravel

Fitur Multi Bahasa Laravel

Kali ini saya hendak membagikan pengalaman saya tentang bagaimana cara menggunakan fitur multi bahasa pada framework laravel. Dengan memanfaatkan multi localization yang sudah ada pada laravel, fitur ini sebenarnya tidak lah sulit untuk di buat, bahkan kita juga bisa membuat dua, tiga bahkan empat bahasa sekalipun sesuai kebutuhan. Di artikel ini saya hanya memfokuskan pada implementasi dasar nya saja, selanjutnya fitur ini bisa di kembangkan sesuai kebutuhan.

Disini saya menggunakan laravel versi 5.8, dan saya memanfaatkan segment pada url untuk menentukan bahasa mana yang hendak di pakai pada tampilan website. Pertama-tama tambahkan code ini pada router :

Route::group(['prefix' => '{locale}'], function() {
	if (in_array(Request::segment(1), config('app.locales'))) {
        App::setLocale(Request::segment(1));

        Route::get('/multi-bahasa', function () {
	       return view('multi-bahasa');
        });
    }
});

Kita memanfaatkan router group untuk memudahkan pemetaan bahasa, dimana prefix-nya kita isi sebagai variable yang akan menjadi parameter bahasa mana yang hendak di gunakan. Untuk sedikit penjelasan tentang router pada laravel bisa di baca di sini (https://soft-gain.com/2019/10/09/router-pada-laravel/).

Berikut nya buka file config/app.php dan tambahkan code berikut ini :

'locales' => ['id', 'en'],

Array di atas bisa di sesuaikan dengan kebutuhan berapa bahasa yang hendak di pakai, untuk contoh kal ini 2 saja dulu yaitu Indonesia dan Inggris.

Berikutnya buka folder resources/lang perhatikan di sini, default nya hanya tersedia satu lang saja yaitu en / english, karena kita hendak menambahkan lang baru yaitu bahasa Indonesia maka tambahkan satu folder id (atau lebih mudahnya saya copy folder en dan saya rename menjadi id). Buka file auth.php pada folder id (resources/lang/id/auth.php) dan tambahkan code berikut :

'label_welcome_header' => 'Selamat Datang',
'label_welcome_content' => 'Ini adalah Bahasa.',

Dan tambahkan code berikut pada auth.php pada folder en (resources/lang/en/auth.php) :

'label_welcome_header' => 'Welcome',
'label_welcome_content' => 'This is English.',

Perhatikan di atas kedua nya memiliki key yang sama, sedangan value nya berbeda di sesuaikan dengan bahasa yang ingin di pakai.

Selanjutnya kita membuat view baru dengan nama multi-bahasa, isi nya kurang lebih seperti ini :

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">@lang('auth.label_welcome_header')</div>

                <div class="card-body">
                    <div class="content">
                        <div class="title m-b-md">
                            @lang('auth.label_welcome_content')
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Dari view di atas, bisa dilihat kita menggunakan @lang(), nah fungsi ini lah yang akan kita pakai untuk menggunakan/menampilka bahasa secara dinamis sesuai dengan url prefix yang kita gunakan. Penggunaannya adalah @lang(‘name_file.key’), dan ini contoh hasilnya :

Menggunakan Bahasa Inggris
Menggunakan Bahasa Indonesia

Perhatikan URL di atas, jika yang kita pakai prefix en maka yang tampil adalah bahasa Inggris dan jika kita pakai prefix id maka yang tampil adalah bahasa Indonesia. Full source bisa diambil di repo saya (https://github.com/ImmanuelJL/belajar-laravel).

Demikian lah hanya sedikit dari apa yang saya coba bagikan, mohon maaf jika terdapat banyak kekurangan. Terima Kasih

Leave a Reply

Your email address will not be published. Required fields are marked *