Cara Mudah Membuat Website Multi Bahasa Dengan Laravel Localization

Cara Mudah Membuat Website Multi Bahasa Dengan Laravel Localization

Admin
Admin・ 1 Juni 2021
23 min read ・ 4950 views

Laravel Multi Bahasa - Halo teman-teman, setelah terakhir menulis artikel pada awal bulan Mei yang lalu, pada kesempatan kali ini saya hadir kembali dengan artikel terbaru. Pada artikel ini saya akan membagikan tutorial tentang cara mudah bagaimana membuat website multi bahasa menggunakan laravel localization. 

Pendahuluan

Sebelum masuk ke langkah-langkah koding, kita akan berkenalan terlebih dahulu dengan laravel localization dan kenapa kita perlu membuat website multi bahasa dengan laravel localization. Jadi, jika teman-teman mempunyai atau sedang membuat website yang target audience-nya global (bukan hanya Indonesia) ada baiknya teman-teman membuatkan juga fitur multi bahasa atau multi language di website atau aplikasi kalian. Fitur multi bahasa atau multi language akan sangat membantu sekali bagi user atau audience di luar Indonesia. Sebenarnya kalaupun tidak ada fitur ini, user atau audience asing bisa juga menggunakan google translate. Akan tetapi akan lebih membantu sekali jika di website atau aplikasi kita sudah tersedia juga fitur ubah bahasa atau multi bahasa atau multi language. Nah, beruntungnya jika kita membuat aplikasi atau website dengan laravel, kita bisa dengan mudah sekali membuat fitur multi bahasa atau multi language ini dengan laravel localization.

Apa itu Laravel Localization ?

Fitur laravel localization menyediakan cara yang mudah untuk mengambil string dalam berbagai bahasa, yang memungkinkan kita untuk dengan mudah mendukung beberapa bahasa dalam aplikasi atau website kita.

Laravel menyediakan dua cara untuk mengelola string terjemahan. Pertama, string bahasa dapat disimpan dalam file di dalam direktori resources/lang. Dalam direktori ini, mungkin ada subdirektori untuk setiap bahasa yang didukung oleh aplikasi atau website kita. Cara ini adalah pendekatan yang digunakan laravel untuk mengelola string terjemahan untuk fitur bawaan laravel seperti pesan kesalah validasi.

laravel localization

Cara kedua, string terjemahan dapat ditentukan dalam file JSON yang ditempatkan di dalam direktori resources/lang. Saat menggunakan cara seperti ini, setiap bahasa yang didukung oleh aplikasi atau website kita akan memiliki file JSON yang sesuai di dalam direktori ini. Cara seperti ini direkomendasikan untuk aplikasi atau website yang memiliki banyak string yang dapat diterjemahkan.

membuat website multi bahasa dengan laravel

Mulai Koding

Setelah mengetahui kenapa aplikasi atau website perlu dibuatkan fitur ubah bahasa atau multi bahasa atau multi language, apa itu laravel localization dan cara-cara seperti apa saja yang dapat dipakai untuk menggunakan laravel localization, dan sekarang waktunya koding atau praktik membuat website multi bahasa dengan laravel localization. Di artikel ini, saya akan memberikan contoh langkah-langkah mulai dari nol atau dimulai dengan install laravel versi terbaru sampai dengan belajar cara menggunakan laravel localization. Dan sebagai catatan, di artikel ini saya akan memberikan contoh menggunakan laravel localization dengan cara yang pertama.

Install Laravel

composer create-project laravel/laravel localization

Mari kita awali percobaan kali ini dengan install laravel versi terbaru. Silahkan buka terminal, masuk ke direktori dimana kamu ingin menempatkan projek laravel dan kemudian jalankan perintah seperti di atas. Pada projek percobaan ini, saya akan menamakannya dengan localization dan pada saat artikel ini dibuat, versi laravel adalah  8.46.0.

Edit View welcome.blade.php

Contoh website multi bahasa

Gambar di atas merupakan contoh gambaran dari projek website multi bahasa yang akan kita buat. Bisa dilihat pada gambar di atas, kita akan membuat simple navbar dengan nav link home dan dropdown language option. Kemudian di bagian body terdapat title section diikuti dengan konten. Skenarionya nanti, ketika kita ubah pilihan bahasa maka title dan konten juga akan menyesuaikan.

<!doctype html>
<html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- Bootstrap CSS -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
        <title>Laravel Multi Bahasa</title>
    </head>
    <body>
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
            <div class="container-fluid">
                <a class="navbar-brand" href="#">Bisabos.com</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                        <li class="nav-item">
                            <a class="nav-link active" aria-current="page" href="#">Home</a>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                            ID
                            </a>
                            <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                                <li><a class="dropdown-item" href="#">ID</a></li>
                                <li><a class="dropdown-item" href="#">EN</a></li>
                            </ul>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
        <div class="container">
            <div class="row pt-5">
                <div class="text-center pb-3">
                    <h1>Artikel Terbaru</h1>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">Header</div>
                        <div class="card-body">
                            <h5 class="card-title">Dark card title</h5>
                            <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>
    </body>
</html>

Oke, disini saya sudah menyiapkan kode (menggunakan bootstrap 5) untuk membuat tampilan website multi bahasa kita. Silahkan kalian copy seluruh kode di atas kemudian masuk ke file resources/views/welcome.blade.php dan paste atau replace.

Buat LocalizationController.php

php artisan make:controller LocalizationController

Pada langkah ini, kita akan membuat file LocalizationController.php untuk menampung logic yang dibutuhkan nantinya. Untuk membuat file LocalizationController.php bisa langsung saja dengan menjalankan perintah seperti di atas pada terminal.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;

class LocalizationController extends Controller
{
    public function lang($locale)
    {
        App::setLocale($locale);
        session()->put('locale', $locale);
        return redirect()->back();
    }
} 

Buka file LocalizationController.php, lalu sesuaikan kode yang ada dengan kode seperti di atas. Dengan kode tersebut akan digunakan untuk menangkap nilai locale atau bahasa yang diinginkan.

Menambahkan Route

if (file_exists(app_path('Http/Controllers/LocalizationController.php')))
{
    Route::get('lang/{locale}', [App\Http\Controllers\LocalizationController::class , 'lang']);
}

Tidak lupa juga untuk mendaftarkannya di route. Buka file routes/web.php, kemudian tambahkan kode seperti di atas.

Buat Middleware

php artisan make:middleware Localization
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;

class Localization
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        if (session()->has('locale')) {
            App::setLocale(session()->get('locale'));
        }
        return $next($request);
    }
}

Sekarang kita perlu membuat middleware untuk mengelola bahasa dinamis yang dipilih melalu dropdown ubah bahasa. Silahkan jalankan perintah php artisan make:middleware Localization untuk membuat file middleware dengan nama file Localization. Buka file App/Http/Middleware/Localization.php, kemudian sesuaikan kode yang ada dengan kode seperti di atas.

\App\Http\Middleware\Localization::class,

Jangan lupa untuk mendaftarkan middleware yang baru saja dibuat ke kernel.php atau lebih tepatnya di dalam protected $middlewareGroups. Sehingga sekarang middlewareGroups akan nampak seperti kode di bawah ini.

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \App\Http\Middleware\Localization::class,
        ],

        'api' => [
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

Membuat File Bahasa

struktur file lang laravel

By default, laravel sudah menyediakan folder en (english) dan sample file lang untuk english. Disini kita akan menambahkan satu lagi file di dalam folder en, kita akan memberikan nama file tersebut dengan nama general.php.

<?php

return [
    'title' => 'Latest Posts',
]; 

Buka file general.php yang baru saja dibuat di dalam folder en, kemudian copy kode di atas dan paste di file general.php (folder en). Dengan kode di atas, kita akan membuat teks title section dalam bahasa inggris dengan "Latest Posts".

<?php

return [
    'title' => 'Artikel Terbaru',
]; 

Kemudian, silahkan buat folder baru di dalam folder lang dengan nama id untuk menampung file-file string untuk bahasa Indonesia. Kemudian buat file baru di dalamnya dengan nama yang sama seperti di folder en yaitu general.php. Jika sudah, silahkan buka file general.php yang baru saja dibuat kemudian copy kode di atas lalu paste di file general.php tersebut.

Edit welcome.php

<li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
    {{strtoupper(Lang::locale())}}
    </a>
    <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
        <li><a class="dropdown-item" href="lang/id">ID</a></li>
        <li><a class="dropdown-item" href="lang/en">EN</a></li>
    </ul>
</li>

Silahkan buka file welcome.blade.php, cari element <li> seperti di atas kemudian sesuaikan juga kode yang sekarang dengan kode di atas. {{strtoupper(Lang::locale())}} berfungsi untuk menangkap nilai language yang aktif di local saat itu. Kemudian pada dropdown, jika user memilih ID maka akan memanggil route lang/id (mengubah mode bahasa ke Indonesia) begitu juga jika user memilih EN maka akan memanggil route lang/en (mengubah mode bahasa ke English).

<h1>{{ __('general.title') }}</h1>

Sekarang silahkan cari kode <h1>Artikel Terbaru</h1>, kemudian ganti dengan kode seperti di atas. Dengan kode seperti di atas, maka teks pada title section akan mengikuti mode bahasa yang dipilih.

Pengujian 1

laravel localization mode English

Sekarang kita akan coba melakukan pengujian untuk yang petama. Silahkan jalankan php artisan serve untuk membuka projek. Maka hasilnya akan seperti gambar di atas, by default bahasa yang aktif di lokal akan en (EN). Jika kalian ingin mengubah pengaturan local, bisa dengan membuka file di config/app.php kemudian cari 'locale' => 'en', dan ubah menjadi 'locale' => 'id',

laravel localization mode Indonesia

Kemudian jika kita pilih Indonesia atau ID pada dropdown maka secara otomatis teks title juga akan berubah menjadi "Artikel Terbaru". Inilah fungsi dari kode {{__('general.title')}} yaitu untuk mengubah teks secara dinamis sesuai dengan apa yang sudah dipersiapkan pada file en/general.php dan id/general.php.

Ok, sampai disini kita sudah berhasil membuat contoh website multi bahasa atau multi language dengan laravel localization. Selanjutnya kita akan menampilkan konten dengan filter bahasa, yang artinya konten yang ditampilkan hanyalah konten yang mempunyai nilai bahasa yang sama dengan bahasa yang aktif di local. Misalnya, jika website dalam mode bahasa Indonesia maka konten yang tampil hanyalah konten dengan bahasa Indonesia.

Menyiapkan Konten

Kita masuk ke langkah membuat filter konten berdasarkan bahasa yang aktif. Disini kita perlu membuat database baru untuk menampung tabel posts beserta data-datanya, untuk itu silahkan buat database baru. Dalam hal ini saya memakai phpMyAdmin dari xampp dan menambahkan database baru dengan nama localization. Setelah itu, jangan lupa juga menyesuaikan pada file .env.

Buat Model & Migration

php artisan make:model Post -m

Jalankan perintah di atas untuk membuat file model Post dan file migration untuk tabel posts.

Edit File create_posts_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('desc');
            $table->enum('lang',['id','en']);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
} 

Sekarang kita perlu membuat field-field apa saja yang nantinya ada di tabel posts. Silahkan buka file di databases/migrations/ [timestamp] _create_posts_table.php, kemudian sesuaikan kode yang ada dengan kode seperti di atas. Sebagai contoh saja, kita akan membuat table posts yang terdiri dari field title, desc dan lang (untuk filter bahasa). Jika sudah, silahkan jalankan php artisan migrate.

Membuat Data Dummy

php artisan make:factory PostFactory --model=Post

Mari kita buat data dummy untuk tabel posts menggunakan factory. Silahkan jalankan perintah di atas pada terminal untuk membuat file PostFactory dengan model Post.

<?php

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = Post::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'title' => $this->faker->sentence(),
            'desc' => $this->faker->paragraph(2),
            'lang' => $this->faker->randomElement(['id', 'en']),
        ];
    }
}

Oke, sekarang silahkan buka file di databases/factories/PostFactory.php kemudian sesuaikan kode yang ada dengan kode seperti di atas. Dengan kode di atas, kita akan membuat data dummy title dengan type sentence, desc dengan type paragraph (2 paragraph) dan lang dengan type randomElement (id/en).

factory dengan tinker

Sekarang kita coba generate data dummy atau factory dengan tinker. Silahkan buka terminal kalian, kemudian jalankan php artisan tinker. Setelah masuk ke tinker, jalankan lagi perintah Post::factory()->count(10)->create untuk menjalankan PostFactory dan membuat 10 data dummy.

Ok, saat ini kita sudah mempunyai 10 data post dengan value lang yang berbeda-beda (id/en). Sekarang kita coba untuk menampilkan konten atau data post sesuai dengan bahasa yang aktif.

Edit Route/web.php

Route::get('/',[App\Http\Controllers\FrontController::class, 'home']);

Kita akan melakukan sedikit perubahan pada file routes/web.php atau tepatnya pada route::get('/') ubah menjadi seperti kode di atas.

<?php

use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
if (file_exists(app_path('Http/Controllers/LocalizationController.php')))
{
    Route::get('lang/{locale}', [App\Http\Controllers\LocalizationController::class , 'lang']);
    Route::get('/lang/{locale}', [App\Http\Controllers\LocalizationController::class , 'lang']);
}


Route::get('/',[App\Http\Controllers\FrontController::class, 'home']);

Sehingga secara keseluruhan, kode routes/web.php akan seperti di atas.

Buat FrontController.php

php artisan make:controller FrontController

Karena pada file routes/web.php kita melakukan perubahan dan mengarahkan route '/' ke method home di file FrontController.php maka kita perlu membuat controller baru dengan nama FrontController. Silahkan jalankan perintah seperti di atas untuk membuat file FrontController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use App\Models\Post;

class FrontController extends Controller
{
    public function home()
    {
        $locale = App::currentLocale();
        $data = Post::where('lang', $locale)->get();
        
        return view('welcome', ['data' => $data]);
    }
} 

Jika sudah, sekarang silahkan buka file FrontController.php kemudian sesuaikan kode yang ada dengan kode di atas atau jika mau lebih cepat bisa langsung saja copy kode di atas lalu replace di file FrontController.php. Maksud dari kode atas adalah kita ingin menampilkan data post yang mempunyai nilai lang sama dengan locale language yang aktif.

Edit welcome.blade.php

<!doctype html>
<html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- Bootstrap CSS -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
        <title>Laravel Multi Bahasa</title>
    </head>
    <body>
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
            <div class="container-fluid">
                <a class="navbar-brand" href="#">Bisabos.com</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                        <li class="nav-item">
                            <a class="nav-link active" aria-current="page" href="#">Home</a>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                                {{strtoupper(Lang::locale())}}
                            </a>
                            <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                                <li><a class="dropdown-item" href="lang/id">ID</a></li>
                                <li><a class="dropdown-item" href="lang/en">EN</a></li>
                            </ul>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
        <div class="container">
            <div class="row pt-5">
                <div class="text-center pb-3">
                    <h1>{{ __('general.title') }}</h1>
                </div>
                @foreach ($data as $data)
                <div class="col-3">
                    <div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
                        <div class="card-header">{{ $data->lang }}</div>
                        <div class="card-body">
                            <h5 class="card-title">{{ $data->title }}</h5>
                            <p class="card-text">{{ Str::limit( strip_tags( $data->desc ), 100 ) }}</p>
                        </div>
                    </div>
                </div>
                @endforeach   
            </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-gtEjrD/SeCtmISkJkNUaaKMoLD0//ElJ19smozuHV6z3Iehds+3Ulb9Bn9Plx0x4" crossorigin="anonymous"></script>
    </body>
</html>

Buka lagi file welcome.blade.php, disini kita akan melakukan perubahan lagi yaitu menampilkan data dari database dan melakukan perulangan dengan foreach. Silahkan sesuaikan kode yang ada dengan kode di atas.

Pengujian 2

membuat website multi bahasa dengan laravel 8

Saatnya pengujian kedua yaitu menampilkan konten atau post berdasarkan lang atau bahasa yang sedang aktif di locale. Untuk mengujinya silahkan jalankan php artisan serve lalu buka di browser, maka konten sudah berhasil terfilter berdasarkan lang atau bahasa. Seperti gambar di atas, lang atau bahasa yang aktif di locale adalah EN atau English maka teks title akan menjadi "Latest Posts" dan konten yang ditampilkanpun cuma data post yang mempunyai nilai lang sama dengan bahasa yang aktif di locale yaitu EN.

membuat website multi language dengan laravel localization

Sekarang kita coba ubah bahasa menjadi ID (Indonesia) maka teks title akan menjadi "Artikel Terbaru" dan konten atau data post yang tampil juga data dengan nilai lang sama dengan bahasa yang aktif di locale yaitu ID.

Kesimpulan

Kita sudah sama-sama belajar bagaimana cara membuat website multi bahasa atau multi language dengan laravel localization. Diawali dengan install projek laravel baru sampai dengan menampilkan konten sesuai dengan lang atau bahasa yang aktif di locale. Dapat kita simpulkan bahwa ternyata membuat website multi bahasa atau multi language dengan laravel tidak sesulit yang dibayangkan. Untuk membuat fitur multi bahasa atau multi language kita dapat menggunakan fitur localization yang telah disediakan oleh laravel. Pada percobaan yang telah sama-sama kita kerjakan ini, kita memakai laravel localization dengan opsi php.

Sekian artikel tentang laravel localization kali ini, jika ada kritik, saran atau apapun itu yang ingin didiskusikan silahkan tulis komentar pada form di bawah ini. See you.

People illustrations by Storyset

Tinggalkan Komentar
Loading Comments