#37-Laravel Multi Bahasa Localization

Tujuan

Multi bahasa merupakan fitur pada website untuk menampilkan informasi dalam berbagai bahasa. Laravel telah menyediakan fitur multi bahasa sehingga untuk membuat fitur multi bahasa dengan laravel menjadi sangat mudah.

Persiapan

  1. Installasi Project Laravel

Membuat Kamus Library

Mempersiapkan semacam library atau kamus dalam folder resources/lang. Bahasanya kita pisah-pisahkan ke dalam folder masing-masing. kita akan membuat 2 buah folder dalam resources/lang. yaitu :

  • en
  • id

Pengaturan bahasa inggris akan kita simpan dalam folder en, sementara untuk bahasa indonesia kita simpan dalam folder id.

Buat file biodata.php dalam folder id dan buat juga file biodata.php dalam folder en, mari kita mulai:

resources/lang/id/biodata.php

<?php
return [
	'welcome' => 'Selamat datang di website kami.',
	"title" => "Silahkan isi formulir berikut dengan benar.",
	"profil" => [
		"name" => "Nama Lengkap Anda",
		"address" => "Alamat Anda",
		"hobby" => "Hobi Anda",
		"job" => "Pekerjaan Anda",
	],
	"button" => "Simpan",
	"thank" => "Terima kasih atas kontribusi anda.",
];

resources/lang/en/biodata.php

<?php
return [
	'welcome' => 'Welcome to our website.',
	"title" => "Please fill form below correctly.",
	"profil" => [
		"name" => "Your Name",
		"address" => "Your Address",
		"hobby" => "Your Hobby",
		"job" => "Your Job",
	],
	"button" => "Save",
	"thank" => "Thank you for your contribution.",
];

Pengaturan multi language/multi dibuat dalam bentuk array. array yang kita buat adalah array yang memiliki key dan value

Pengaturan bahasa ini bisa kita panggil nantinya dengan

//cara pertama
@lang("nama_file_bahasa/key_array_nya")

//cara kedua
{{ __("nama_file_bahasa/key_array_nya") }}

Sekarang kita lanjutkan dengan membuat tampilan programnya.

Menyiapkan Routes

routes/web.php

// localization default
Route::get('/form', function () {
    return view('biodata');
});

Menyiapkan View

resources/views/biodata.blade.php

<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="csrf-token" content="{{ csrf_token() }}">
        <title>{{$title}}</title>
        <link rel="stylesheet" type="text/css" href="{{ asset('/css/app.css') }}">
    </head>
    <body>
      <div id="app">
        <main class="py-4">
            <div class="container">
                <div class="card mt-5">
                    <div class="card-header text-center">
                        @lang('biodata.welcome')
                    </div>
                    <div class="card-body">
                        <form>
                            <div>
                                <label>@lang('biodata.profil.name')</label>
                                <input type="text" name="">
                            </div>
                            <div>
                                <label>@lang('biodata.profil.address')</label>
                                <input type="text" name="">
                            </div>                
                            <div>
                                <label>@lang('biodata.profil.hobby')</label>
                                <input type="text" name="">
                            </div>                
                            <div>
                                <label>@lang('biodata.profil.job')</label>
                                <input type="text" name="">
                            </div>                
                            <div>
                                <button>@lang('biodata.button')</button>
                            </div>
                        </form>
                        <p>@lang('biodata.thank')</p>
                    </div>
                </div>
            </div>
        </main>
        <footer class="container-fluid">
            <p>© <a href="https://ombagoes.com">ombagoes.com</a>. 2019 - 2020</p>
        </footer>
      </div>
    </body>
    <script src="{{ asset('js/app.js') }}"></script>
</html>

Jalankan Program

Jalankan project laravel kita menggunakan php artisan server, lalu buka web browser http://localhost:8000/form

Form En

Perhatikan pada gambar di atas. yang tampil adalah formulir dalam bahasa inggris. kenapa bahasa inggris ? karena kita belum menentukan bahasa apa yang akan kita gunakan. sehingg secara default laravel akan menggunakan bahasa inggris.

Mengatur Bahasa Default Localization Laravel

Untuk mengatur bahasa defaultnya, pengaturannya ada di config/app.php. buka dan cari pengaturan ‘locale’ => ‘en’, ubah menjadi id

'locale' => 'id',

Maka sekarang bahasa defaultnya adalah bahasa indonesia id

Buka kembali web browser http://localhost:8000/form

Form Id

Jika belum berubah jalankan perintah berikut :

php artisan config:clear

Multi Bahasa Localization Laravel Dengan URL

Tapi bagaimana caranya jika kita ingin memilih bahasanya secara otomatis. kita bisa membuatnya dengan fungsi setLocale() melalui url.

Jadi jika diakses http://localhost:8000/id/form atau http://localhost:8000/en/form

Buka kembali routes/web.php

// localization pilih bahasa
Route::get('/{locale}/form', function ($locale) {
    App::setLocale($locale);
    return view('biodata');
});

Coba kembali buka http://localhost:8000/en/form dan http://localhost:8000/id/form

Leave a Reply

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>