menu

Laravel - Localization (Multilanguage Laravel)


Pada tutorial laravel sebelumnya kita sudah membahas tentang membuat sebuah pagination pada Laravel, Tutorial kali ini kita akan membuat translate pada website atau Localization.

Website multilanguage ini sangat berguna bagi website yang memiliki pengunjung website sampai keluar negeri, itulah sebabnya kita membutuhkan sebuah feature untuk mentranslate website kita.

Oke, langsung saja kita mulai tutorialnya..

Pertama, edit dulu halaman home yang akan menjadi contoh view translatenya, dalam hal ini codedoct menggunakan file dengan nama hello.blade yang terletak pada path protected/app/views/web/ isi dengan code berikut,
@extends('layouts/web/master')

<?php $title = "Welcome" ?>

@section('script')
@stop

@section('content')
<div class="isi">
 <h4>{{ trans('translate.welcome_to_codedoct'); }}</h4>
 <br>
 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt facilis, dolore similique maiores? Doloribus, asperiores. Iusto debitis tempora velit repellat sed autem, quaerat commodi, necessitatibus soluta quos libero voluptatibus eum.</p>
 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt facilis, dolore similique maiores? Doloribus, asperiores. Iusto debitis tempora velit repellat sed autem, quaerat commodi, necessitatibus soluta quos libero voluptatibus eum.</p>
 <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt facilis, dolore similique maiores? Doloribus, asperiores. Iusto debitis tempora velit repellat sed autem, quaerat commodi, necessitatibus soluta quos libero voluptatibus eum.</p>
</div>
@stop

Selanjutnya, pastikan file view tersebut memiliki controller jika belum silahkan buat file controller baru dengan nama HomeController.php pada path protected/app/controllers/ isikan code berikut,
<?php

class HomeController extends BaseController {

 /*
 |--------------------------------------------------------------------------
 | Default Home Controller
 |--------------------------------------------------------------------------
 |
 | You may wish to use controllers instead of, or in addition to, Closure
 | based routes. That's great! Here is an example controller method to
 | get you started. To route to this controller, just add the route:
 |
 | Route::get('/', 'HomeController@showWelcome');
 |
 */

 public function showWelcome()
 {
  return View::make('web.hello');
 }

}

Kemudian edit file route yang bernama web.php pada path protected/app/routes/ edit dengan menambahkan code berikut,
.
.
.
//Localization
Route::get('lang/{lang}', function($lang)
{
    Session::put('lang', $lang);
    return Redirect::back();
});
.
.
.

Setelah itu, edit file global.php pada path protected/app/start/ dengan menambahkan code berikut,
.
.
.
//language
App::setLocale(Session::get('lang', 'en'));

Edit pula file Header.blade.php pada path protected/app/views/layouts/web/ menjadi seperti ini,
.
.
.
     <div class="dropdown-script">
      <button onclick="myFunction()" class="dropbtn btn btn-default">Translate</button>
      <div id="myDropdown" class="dropdown-content-script">
        <a href="{{ URL::to('lang/en') }}">English</a>
        <a href="{{ URL::to('lang/ina') }}">Indonesia</a>
      </div>
     </div>
.
.
.

Dan edit file constants.php pada path protected/app/ tambahkan code berikut,
.
.
.
// Localization
define('trans', 'Lang::get');

Terakhir, buat folder baru dengan nama ina pada path protected/app/lang/ dan buat file baru dengan nama translate.php pada folder ina dan folder en sehingga akan tampak seperti ini,


Isikan code berikut pada masing-masing file translate.php
translate.php (ina)
<?php

return array(
    'welcome_to_codedoct' => 'Selamat datang di Codedoct.com'
);

translate.php (en)
<?php

return array(
    'welcome_to_codedoct' => 'Welcome to Codedoct.com'
);

Dan hasil akhirnya akan tampak seperti ini.



===DONE!===

3 komentar

For Laravel localization using JSON files, I recommend the localization management platform https://poeditor.com.
Works well for collaborative translation projects.