Lokalisasi Laravel Langkah demi Langkah [Panduan]

Bawa bisnis Anda ke level selanjutnya dengan ekspansi global. Pertumbuhan dan pengembangan bisnis.
目录

Laravel localization adalah fitur canggih yang memungkinkan pengembang membuat situs web multibahasa. Dengan menerapkan lokalisasi web di proyek Laravel Anda, Anda dapat memberikan pengalaman pengguna yang dipersonalisasi bagi pengunjung dari berbagai latar belakang bahasa, yang pada akhirnya memperluas jangkauan Anda dan meningkatkan keterlibatan pengguna.

Kami akan memandu Anda melalui penerapan lokalisasi di aplikasi Laravel Anda dan memperkenalkan Anda pada alat yang dapat menyederhanakan dan meningkatkan upaya lokalisasi Anda!

Mengapa Anda perlu melokalisasi situs web Laravel ?

Seorang pria dengan rompi oranye memegang tablet dengan peta dunia. Berbagai bendera negara ditampilkan.

Berikut adalah beberapa alasan penting mengapa Anda harus melokalkan situs web Laravel Anda.

  • Jangkau audiens global: Dengan melokalkan situs Laravel Anda, Anda dapat memperluas jangkauan aplikasi Anda ke audiens internasional. Hal ini memungkinkan pengguna dari berbagai negara dan latar belakang bahasa untuk memahami dan berinteraksi dengan konten Anda.
  • Meningkatkan pengalaman pengguna: Lokalisasi memungkinkan pengguna berinteraksi dengan aplikasi dalam bahasa asli mereka, yang secara signifikan meningkatkan pengalaman pengguna. Hal ini dapat meningkatkan tingkat keterlibatan, mengurangi tingkat pentalan, dan meningkatkan konversi.
  • Keunggulan kompetitif: Di pasar global yang kompetitif, menawarkan aplikasi dalam berbagai bahasa dapat memberikan keunggulan signifikan dibandingkan pesaing. Ini menunjukkan komitmen Anda terhadap pasar internasional dan dapat membantu Anda memasuki pasar baru dengan lebih efektif.
  • Meningkatkan SEO: Situs web yang terlokalisasi dengan baik cenderung mendapat peringkat lebih baik di mesin pencari untuk pencarian dalam bahasa tertentu. Ini dapat meningkatkan lalu lintas blog Anda dan visibilitas online di berbagai pasar dengan terjemahan multibahasa.

Persyaratan untuk lokalisasi Laravel multibahasa

Dua orang berkolaborasi di layar komputer besar dengan berbagai aplikasi. Mereka tampak bekerja sama.

Ada beberapa persyaratan dan langkah yang perlu dipertimbangkan saat mengimplementasikan lokalisasi multibahasa di Laravel.

  • Untuk mendapatkan fitur lokalisasi terbaru, pastikan Anda menggunakan versi Laravel terbaru (misalnya, versi 10.x).
  • Pemahaman dasar tentang PHP dan framework Laravel akan membantu dalam proses implementasi.
  • Siapkan lingkungan pengembangan lokal atau server yang mendukung Laravel, termasuk server web dan basis data.
  • Tentukan bahasa yang akan didukung aplikasi Anda sejak awal.

Terjemahan Laravel yang sederhana

Pria bekerja di laptop. Menjelajah web di layar.

Setelah memahami persyaratan apa yang harus dipenuhi sebelum menerjemahkan aplikasi atau web Laravel , kami akan memberikan beberapa langkah untuk menerjemahkan Laravel secara sederhana.

Untuk melakukannya, buka file view yang ingin Anda lokalkan, misalnya, resources/views/welcome.blade.php. Kemudian, ganti tag body dengan kode berikut.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                Welcome to Linguise website!
            </div>
        </div>
    </div>
</body>
				
			

Seperti yang Anda lihat, teks di atas saat ini ditulis langsung di dalam kode. Hal ini kurang efisien dan menyulitkan untuk menerjemahkan situs web ke berbagai bahasa (internasionalisasi). 

Kami akan membuat teks di atas lebih fleksibel agar dapat dengan mudah diadaptasi ke berbagai bahasa. Laravel menyediakan fitur yang sangat membantu untuk ini; sistem lokalisasi. Sebagai langkah pertama, ganti teks yang ada dengan kode berikut.

				
					{{ __('Welcome to Linguise website!') }}
				
			

Laravel akan menampilkan teks di atas secara default dan mencari terjemahannya jika pengguna memilih bahasa selain Inggris. Dalam hal ini, bahasa Inggris akan digunakan sebagai bahasa default aplikasi.

Menyiapkan locale di web multibahasa Laravel

Dua orang bekerja di layar komputer. Mereka berinteraksi dengan layar besar.

Namun bagaimana Laravel menentukan bahasa saat ini atau mengetahui bahasa mana yang tersedia di aplikasi? Ia memeriksa pengaturan lokal di file config/app.php. Buka file ini dan cari dua kunci berikut.

				
					/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/

'locale' => 'en',

/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/

'fallback_locale' => 'en',

				
			

Penjelasan di atas kunci seharusnya sudah jelas. Singkatnya, kunci locale menyimpan locale default untuk aplikasi Anda (jika tidak ada locale lain yang ditentukan dalam kode). fallback_locale diaktifkan jika locale yang tidak ada diminta di aplikasi Anda.

Sekarang, mari kita tambahkan kunci baru ke file ini untuk menyediakan daftar semua bahasa lokal yang didukung.

				
					/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/

'available_locales' => [
  'English' => 'en',
  'Italian' => 'it',
  'French' => 'fr',
],


				
			

Pada titik ini, kami telah mencoba Laravel web untuk mendukung tiga bahasa, yaitu Inggris, Italia, dan Prancis.

Gambaran umum file terjemahan Laravel

Seorang wanita menunjuk ke layar komputer besar yang menampilkan berbagai ikon berwarna-warni. Layar tersebut memiliki latar belakang putih dengan ikon berwarna biru dan ungu.

Di Laravel, seperti di banyak framework lainnya, terjemahan untuk berbagai bahasa disimpan dalam file terpisah. Dua metode digunakan untuk mengatur file terjemahan ini.

Metode lama menyimpan file dalam struktur berikut: resources/lang/{en,fr,it}/{myfile.php}. Metode yang lebih baru menggunakan file JSON, seperti resources/lang/{fr.json, it.json}. Artikel ini akan berfokus pada metode yang lebih baru, meskipun prinsipnya serupa untuk metode lama, selain perbedaan dalam cara penamaan dan pengaksesan kunci terjemahan.

Untuk bahasa dengan variasi regional, Anda harus menamai direktori atau file bahasa sesuai dengan standar ISO 15897. Misalnya, British English akan dinamai en_GB, bukan en-gb.

Informasi umum

Di Laravel, seperti halnya banyak framework lainnya, terjemahan untuk berbagai bahasa disimpan dalam file terpisah. Ada dua metode utama untuk mengatur file terjemahan Laravel .

  1. Pendekatan lama melibatkan penyimpanan file di bawah path: resources/lang/{en,fr,it}/{myfile.php}.
  2. Pendekatan modern menggunakan file resources/lang/{fr.json, it.json}.

Artikel ini akan berfokus pada metode kedua, meskipun prinsip-prinsipnya berlaku untuk keduanya (dengan variasi dalam cara kunci terjemahan diberi nama dan diakses).

Untuk bahasa yang bervariasi menurut wilayah, disarankan untuk menamai direktori/file bahasa sesuai standar ISO 15897. Misalnya, bahasa Inggris Britania akan dilambangkan sebagai en_GB, bukan en-gb.

Membuat file terjemahan Laravel

Setelah mengonfigurasi locale untuk aplikasi kita, kita dapat melanjutkan untuk menerjemahkan pesan selamat datang default kita.

Mari kita mulai dengan membuat file lokalisasi baru dalam format JSON di dalam direktori resources/lang. Pertama, kita akan membuat file resources/lang/it.json dan mengisinya dengan terjemahan yang sesuai.

				
					{
  "Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}

				
			

Selanjutnya, tambahkan file resources/lang/fr.json.

				
					{
 "Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}

				
			

Seperti yang dapat Anda amati, kami secara konsisten merujuk pesan default dari file welcome.blade.php ({{ __(‘Selamat datang di situs web Linguise !’) }}). Tidak perlu membuat file en.json, karena Laravel secara otomatis mengenali bahwa pesan default dalam bahasa Inggris.

Mengatur pengalih bahasa di aplikasi Laravel multibahasa

Orang-orang berinteraksi dengan antarmuka email yang besar.

Selain itu, Laravel belum diatur untuk menimpa bahasa lokal, jadi untuk saat ini, kami akan menangani terjemahan langsung di dalam rute. Ubah rute selamat datang default di dalam file routes/web.php seperti ini.

				
					Route::get('/{locale?}', function ($locale = null) {
    if (isset($locale) && in_array($locale, config('app.available_locales'))) {
        app()->setLocale($locale);
    }
    
    return view('welcome');
});
				
			

Dalam kasus ini, kami menangkap parameter GET locale opsional dan menetapkan locale saat ini berdasarkan parameter tersebut (jika locale yang diminta didukung).

Sekarang, Anda dapat mengunjungi situs web Anda dan menyertakan salah satu bahasa yang didukung sebagai segmen pertama dalam URL. Misalnya, membuka localhost/it atau localhost/fr akan menampilkan konten yang dilokalkan. Jika Anda tidak menentukan lokal atau memilih salah satu yang tidak didukung, Laravel akan default ke bahasa Inggris (en).

Middleware lokalisasi untuk Laravel

Menyertakan locale di setiap URL mungkin tidak ideal dan dapat mengganggu daya tarik visual situs. Untuk mengatasi hal ini, kami akan menyiapkan pengalih bahasa dan memanfaatkan sesi pengguna untuk menampilkan konten yang diterjemahkan. Anda dapat membuat middleware baru di file app/Http/Middleware/Localization.php, atau menghasilkannya dengan menjalankan perintah artisan make:middleware Localization.

Kemudian, tambahkan kode berikut di dalamnya.

				
					<?php

namespace App\Http\Middleware;

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

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);
    }
}


				
			

Middleware ini akan mengarahkan Laravel untuk menggunakan lokasi yang dipilih oleh pengguna jika opsi ini ada dalam sesi.

Karena kita perlu operasi ini dijalankan pada setiap permintaan, tambahkan ke stack middleware default di app/Http/Kernel.php untuk grup middleware web.

				
					/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
protected $middlewareGroups = [
  'web' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \App\Http\Middleware\Localization::class, // <--- add this
],


				
			

Memodifikasi rute

Selanjutnya, tentukan rute untuk mengubah locale di file routes/web.php. Kami menggunakan rute closure di sini, tetapi Anda dapat menempatkan kode yang sama di dalam controller jika Anda mau.

				
					Route::get('language/{locale}', function ($locale) {
   app()->setLocale($locale);
   session()->put('locale', $locale);
   return redirect()->back();
});

				
			

Selain itu, hapus pengalihan locale yang sebelumnya ditambahkan ke rute selamat datang default. Rute root Anda sekarang seharusnya terlihat seperti ini.

				
					Route::get('/', function () {
   return view('welcome');
});

				
			

Setelah ini dilakukan, pengguna hanya dapat mengganti bahasa aktif dengan mengunjungi localhost/language/{locale}. Lokal yang dipilih akan disimpan dalam sesi, dan pengguna akan dialihkan kembali ke halaman sebelumnya (seperti yang ditangani oleh middleware Localization). 

Untuk mengujinya, buka localhost/language/it (dengan asumsi cookie sesi aktif di browser Anda), dan Anda akan melihat konten yang telah diterjemahkan. Anda dapat menavigasi situs atau menyegarkan halaman, dan bahasa yang dipilih akan tetap berlaku.

Implementasi pengalih bahasa

Sekarang, kita perlu memberi pengguna opsi yang dapat diklik untuk mengubah pengalih bahasa Laravel web daripada mengharuskan mereka memasukkan kode lokal secara manual di URL. Untuk mencapai hal ini, buat pengalih bahasa sederhana. Tambahkan file baru di resources/views/partials/language_switcher.blade.php dan masukkan kode berikut.

				
					<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
    @foreach($available_locales as $locale_name => $available_locale)
        @if($available_locale === $current_locale)
            <span class="ml-2 mr-2 text-gray-700">{{ $locale_name }}</span>
        @else
            <a class="ml-1 underline ml-2 mr-2" href="language/{{ $available_locale }}">
                <span>{{ $locale_name }}</span>
            </a>
        @endif
    @endforeach
</div>


				
			

Untuk menyertakan pengalih bahasa yang baru dibuat di tampilan “welcome”, cukup tambahkan baris berikut ke file welcome.blade.php Anda di tempat Anda ingin pengalih tersebut muncul.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            @include('partials/language_switcher')

            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                {{ __('Welcome to our website!') }}
            </div>
        </div>
    </div>
</body>


				
			

Buka file app/Providers/AppServiceProvider.php dan tambahkan kode berikut di dalam metode boot() untuk membagikan locale saat ini ke semua view ketika pengalih bahasa digunakan

				
					* Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    view()->composer('partials.language_switcher', function ($view) {
        $view->with('current_locale', app()->getLocale());
        $view->with('available_locales', config('app.available_locales'));
    });
}


				
			

Fitur terjemahan tingkat lanjut di Laravel PHP

Ilustrasi orang-orang yang sedang mengerjakan proyek. Sebuah tim yang berkolaborasi.

Dalam pembahasan ini, kita akan membahas komponen lokalisasi lainnya, yaitu tanggal, angka, dan mata uang. Berikut langkah-langkahnya.

Tanggal yang dilokalkan di Laravel

Menangani tanggal dan waktu sangat penting dalam proses lokalisasi. Laravel menggunakan Carbon untuk mengelola tanggal dan waktu. Berikut cara Anda dapat menggunakan Carbon untuk menampilkan tanggal yang dilokalkan.

				
					<?php
Route::get('/', function () {
    $today = \Carbon\Carbon::now()
        ->settings(
            [
                'locale' => app()->getLocale(),
            ]
        );

    // LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
    $dateMessage = $today->isoFormat('dddd, LL');

    return view('welcome', [
        'date_message' => $dateMessage
    ]);
});


				
			

Kode ini menetapkan lokal Carbon berdasarkan lokal aplikasi saat ini dan memformat tanggal sesuai dengan itu.

Untuk menampilkan tanggal yang dilokalkan dalam tampilan:

				
					{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
<br>
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
<br>
{{ $date_message }}


				
			

Memformat angka dan mata uang

Berbagai negara memiliki cara yang berbeda-beda dalam memformat angka. Misalnya.

  • Prancis → 123 123,12
  • Jerman → 123.123,12
  • Jepang → 123.123

Untuk mengakomodasi variasi ini di aplikasi Laravel Anda, Anda dapat menggunakan NumberFormatter.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);

$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
				
			

Anda juga dapat mengeja angka dalam bahasa tertentu.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);

$num2 = NumberFormatter::create('it', NumberFormatter::SPELLOUT);
				
			

Berikut adalah mata uangnya. Untuk locale Prancis (`fr`), mata uang akan ditampilkan dalam euro (€), sedangkan untuk locale AS (`en_US`), akan ditampilkan dalam dolar AS ($).

				
					<?php
$currency1 = NumberFormatter::create('it', NumberFormatter::CURRENCY);

$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
				
			
Atasi Hambatan Bahasa
Ucapkan selamat tinggal pada hambatan bahasa dan sambut pertumbuhan tanpa batas! Coba layanan penerjemahan otomatis kami hari ini.

Solusi alternatif Laravel localization dengan Linguise

Tim yang bekerja sama dalam proyek digital. Mereka dikelilingi oleh berbagai alat dan simbol digital.

Setelah memahami langkah-langkah lokalisasi Laravel seperti yang dijelaskan dalam artikel, proses ini melibatkan banyak langkah yang mengharuskan pengguna memahami kode program Laravel secara mendalam.

Hal ini tentu dapat menyulitkan pengguna pemula yang ingin melokalkan aplikasi mereka. Oleh karena itu, diperlukan solusi yang lebih inovatif yang mampu menerjemahkan dengan cepat, mendukung lokalisasi, dan hanya memerlukan beberapa langkah sederhana untuk diterapkan.

Salah satu solusi yang menjanjikan adalah Linguise. Linguise menawarkan pendekatan yang lebih mudah dan lebih efisien untuk lokalisasi Laravel tanpa memerlukan pengetahuan coding yang mendalam. Fitur utama Linguise meliputi.

  • Integrasi mudah dengan Laravel
  • Sesuaikan pengalih bahasa tanpa coding
  • Terjemahan gambar
  • Editor langsung untuk menyesuaikan terjemahan dengan konteks lokal
  • Terjemahan dinamis untuk konten yang dihasilkan secara dinamis
  • Optimasi SEO untuk versi multi-bahasa

Langkah-langkah untuk menginstal Linguise di situs web Laravel juga dapat dilakukan dengan mudah. Berikut penjelasan singkatnya.

  1. Buat akun Linguise (gunakan uji coba gratis 30 hari secara cuma-cuma)
  2. Daftarkan domain web Laravel Anda dan masukkan beberapa informasi. Anda akan mendapatkan kunci API.
  3. Unggah dan hubungkan skrip terjemahan Linguise ke folder Laravel yang Anda miliki.
  4. Siapkan URL bahasa di file htaccess.
  5. Sisipkan skrip pengalih bahasa di bagian head HTML Anda.
  6. Sesuaikan pengalih bahasa sesuai kebutuhan
  7. Pengalih bahasa akan muncul di situs web Laravel , dan konten dapat diterjemahkan secara otomatis.

Bagaimana? Dengan Linguise, Anda hanya perlu mendaftar dan mengaktifkan, dan pengalih bahasa akan muncul. Setelah itu, Anda bebas melakukan lokalisasi, misalnya, melalui editor langsung, menerjemahkan media, gambar, dll.

Siap menjelajahi pasar baru? Coba layanan terjemahan otomatis kami secara gratis dengan uji coba bebas risiko 1 bulan. Tidak perlu kartu kredit!

Kesimpulan

Lokalisasi Laravel adalah fitur canggih yang memungkinkan pengembang membuat situs web dan aplikasi multibahasa. Seperti yang telah kita lihat, proses lokalisasi Laravel bawaan melibatkan beberapa langkah dan membutuhkan pemahaman yang baik tentang framework. Hal ini bisa menjadi tantangan bagi pemula atau mereka yang mencari solusi yang lebih cepat.

Alat seperti Linguise menawarkan alternatif inovatif bagi mereka yang mencari pendekatan yang lebih efisien. Solusi ini menawarkan kemampuan terjemahan cepat, integrasi mudah, dan fitur ramah pengguna seperti pengalih bahasa yang dapat disesuaikan dan terjemahan gambar. Sekarang, buat Linguise akun Anda dan nikmati fitur kami untuk melokalkan Laravel!

Anda mungkin juga tertarik membaca

Don't miss out!
Berlangganan Buletin kami

Dapatkan berita tentang terjemahan situs web otomatis, SEO internasional, dan lainnya!

Invalid email address
Cobalah. Satu per bulan, dan Anda dapat berhenti berlangganan kapan saja.

Jangan pergi tanpa memberikan alamat email Anda!

Kami tidak dapat menjamin Anda akan memenangkan lotre, tetapi kami dapat menjanjikan beberapa berita informatif yang menarik seputar terjemahan dan diskon sesekali.

Don't miss out!
Invalid email address