DEV Community

Cover image for Laravel indonesian validation language
Syofyan Zuhad
Syofyan Zuhad

Posted on • Edited on • Originally published at syofyanzuhad.Medium

6 1

Laravel indonesian validation language

Kali ini saya akan coba menyusun ulang gaya penulisan agar lebih mudah dibaca, terkhusus untuk para developer yang stuck di tengah jalan. Maka dari itu kalian bisa berikan tanggapan kalian dari gaya penulisan baru ini di kolom komentar.

#masalah

Website sudah konsisten pakai bahasa indonesia tapi, errornya kayak gini :

laravel validation

Pernah mengalami stuck seperti di atas ?
Tenang, sharing kita kali ini adalah bagaimana cara untuk mengganti bahasa dari error validation milik laravel yang defaultnya berbahasa inggris. (ya iyalah yg buat orang sono)

#solusi

satu

Pertama, yang harus kita lakukan adalah mendownload file validation sesuai bahasa yang akan kita pakai.
Untuk mendownload versi lengkapnya kalian bisa menjalankan perintah :



composer require caouecs/laravel-lang


Enter fullscreen mode Exit fullscreen mode

source: https://github.com/caouecs/Laravel-lang

dua

Jika ingin memkai hanya bahasa indonesia nya saja, buatlah folder baru di dalam directory resource/lang dengan nama id dan simpan ke-empat file di atas didalam folder id tersebut.

resource/lang

lalu copy disini isi dari tiap2 file dibawah ini :

auth.php

<?php
return [
/*
|--------------------------------------------------------------------------
| Baris-baris bahasa untuk autentifikasi
|--------------------------------------------------------------------------
|
| Baris bahasa berikut digunakan selama proses autentifikasi untuk beberapa pesan
| yang perlu kita tampilkan ke pengguna. Anda bebas untuk memodifikasi
| baris bahasa sesuai dengan keperluan aplikasi anda.
|
*/
'failed' => 'Identitas tersebut tidak cocok dengan data kami.',
'throttle' => 'Terlalu banyak usaha masuk. Silahkan coba lagi dalam :seconds detik.',
];
view raw auth.php hosted with ❤ by GitHub

pagination.php

<?php
return [
/*
|---------------------------------------------------------------------------------------
| Baris Bahasa untuk Penomoran Halaman
|---------------------------------------------------------------------------------------
|
| Baris bahasa berikut meggunakan pustaka penomoran untuk membuat
| tautan yang sederhana. Anda bebas untuk mengubahnya kapan pun yang Anda
| inginkan menyesuaikan dengan pandangan Anda agar lebih cocok ke aplikasi Anda.
|
*/
'previous' => '&laquo; Sebelumnya',
'next' => 'Berikutnya &raquo;',
];
view raw pagination.php hosted with ❤ by GitHub

passwords.php

<?php
return [
/*
|---------------------------------------------------------------------------------------
| Baris Bahasa untuk Pengingat Kata Sandi
|---------------------------------------------------------------------------------------
|
| Baris bahasa berikut adalah baris standar yang cocok dengan alasan yang diberikan
| oleh pembongkar kata sandi yang telah gagal dalam upaya pembaruan kata
| sandi, misalnya token tidak valid atau kata sandi baru tidak valid.
|
*/
'reset' => 'Kata sandi Anda sudah direset!',
'sent' => 'Kami sudah mengirim surel yang berisi tautan untuk mereset kata sandi Anda!',
'throttled' => 'Harap tunggu sebelum mencoba lagi.',
'token' => 'Token pengaturan ulang kata sandi tidak sah.',
'user' => 'Kami tidak dapat menemukan pengguna dengan alamat surel tersebut.',
];
view raw passwords.php hosted with ❤ by GitHub

validation.php

<?php
return [
/*
|---------------------------------------------------------------------------------------
| Baris Bahasa untuk Validasi
|---------------------------------------------------------------------------------------
|
| Baris bahasa berikut ini berisi standar pesan kesalahan yang digunakan oleh
| kelas validasi. Beberapa aturan mempunyai banyak versi seperti aturan 'size'.
| Jangan ragu untuk mengoptimalkan setiap pesan yang ada di sini.
|
*/
'accepted' => ':attribute harus diterima.',
'active_url' => ':attribute bukan URL yang valid.',
'after' => ':attribute harus berisi tanggal setelah :date.',
'after_or_equal' => ':attribute harus berisi tanggal setelah atau sama dengan :date.',
'alpha' => ':attribute hanya boleh berisi huruf.',
'alpha_dash' => ':attribute hanya boleh berisi huruf, angka, strip, dan garis bawah.',
'alpha_num' => ':attribute hanya boleh berisi huruf dan angka.',
'array' => ':attribute harus berisi sebuah array.',
'before' => ':attribute harus berisi tanggal sebelum :date.',
'before_or_equal' => ':attribute harus berisi tanggal sebelum atau sama dengan :date.',
'between' => [
'numeric' => ':attribute harus bernilai antara :min sampai :max.',
'file' => ':attribute harus berukuran antara :min sampai :max kilobita.',
'string' => ':attribute harus berisi antara :min sampai :max karakter.',
'array' => ':attribute harus memiliki :min sampai :max anggota.',
],
'boolean' => ':attribute harus bernilai true atau false',
'confirmed' => 'Konfirmasi :attribute tidak cocok.',
'date' => ':attribute bukan tanggal yang valid.',
'date_equals' => ':attribute harus berisi tanggal yang sama dengan :date.',
'date_format' => ':attribute tidak cocok dengan format :format.',
'different' => ':attribute dan :other harus berbeda.',
'digits' => ':attribute harus terdiri dari :digits angka.',
'digits_between' => ':attribute harus terdiri dari :min sampai :max angka.',
'dimensions' => ':attribute tidak memiliki dimensi gambar yang valid.',
'distinct' => ':attribute memiliki nilai yang duplikat.',
'email' => ':attribute harus berupa alamat surel yang valid.',
'ends_with' => ':attribute harus diakhiri salah satu dari berikut: :values',
'exists' => ':attribute yang dipilih tidak valid.',
'file' => ':attribute harus berupa sebuah berkas.',
'filled' => ':attribute harus memiliki nilai.',
'gt' => [
'numeric' => ':attribute harus bernilai lebih besar dari :value.',
'file' => ':attribute harus berukuran lebih besar dari :value kilobita.',
'string' => ':attribute harus berisi lebih besar dari :value karakter.',
'array' => ':attribute harus memiliki lebih dari :value anggota.',
],
'gte' => [
'numeric' => ':attribute harus bernilai lebih besar dari atau sama dengan :value.',
'file' => ':attribute harus berukuran lebih besar dari atau sama dengan :value kilobita.',
'string' => ':attribute harus berisi lebih besar dari atau sama dengan :value karakter.',
'array' => ':attribute harus terdiri dari :value anggota atau lebih.',
],
'image' => ':attribute harus berupa gambar.',
'in' => ':attribute yang dipilih tidak valid.',
'in_array' => ':attribute tidak ada di dalam :other.',
'integer' => ':attribute harus berupa bilangan bulat.',
'ip' => ':attribute harus berupa alamat IP yang valid.',
'ipv4' => ':attribute harus berupa alamat IPv4 yang valid.',
'ipv6' => ':attribute harus berupa alamat IPv6 yang valid.',
'json' => ':attribute harus berupa JSON string yang valid.',
'lt' => [
'numeric' => ':attribute harus bernilai kurang dari :value.',
'file' => ':attribute harus berukuran kurang dari :value kilobita.',
'string' => ':attribute harus berisi kurang dari :value karakter.',
'array' => ':attribute harus memiliki kurang dari :value anggota.',
],
'lte' => [
'numeric' => ':attribute harus bernilai kurang dari atau sama dengan :value.',
'file' => ':attribute harus berukuran kurang dari atau sama dengan :value kilobita.',
'string' => ':attribute harus berisi kurang dari atau sama dengan :value karakter.',
'array' => ':attribute harus tidak lebih dari :value anggota.',
],
'max' => [
'numeric' => ':attribute maskimal bernilai :max.',
'file' => ':attribute maksimal berukuran :max kilobita.',
'string' => ':attribute maskimal berisi :max karakter.',
'array' => ':attribute maksimal terdiri dari :max anggota.',
],
'mimes' => ':attribute harus berupa berkas berjenis: :values.',
'mimetypes' => ':attribute harus berupa berkas berjenis: :values.',
'min' => [
'numeric' => ':attribute minimal bernilai :min.',
'file' => ':attribute minimal berukuran :min kilobita.',
'string' => ':attribute minimal berisi :min karakter.',
'array' => ':attribute minimal terdiri dari :min anggota.',
],
'not_in' => ':attribute yang dipilih tidak valid.',
'not_regex' => 'Format :attribute tidak valid.',
'numeric' => ':attribute harus berupa angka.',
'password' => 'Kata sandi salah.',
'present' => ':attribute wajib ada.',
'regex' => 'Format :attribute tidak valid.',
'required' => ':attribute wajib diisi.',
'required_if' => ':attribute wajib diisi bila :other adalah :value.',
'required_unless' => ':attribute wajib diisi kecuali :other memiliki nilai :values.',
'required_with' => ':attribute wajib diisi bila terdapat :values.',
'required_with_all' => ':attribute wajib diisi bila terdapat :values.',
'required_without' => ':attribute wajib diisi bila tidak terdapat :values.',
'required_without_all' => ':attribute wajib diisi bila sama sekali tidak terdapat :values.',
'same' => ':attribute dan :other harus sama.',
'size' => [
'numeric' => ':attribute harus berukuran :size.',
'file' => ':attribute harus berukuran :size kilobyte.',
'string' => ':attribute harus berukuran :size karakter.',
'array' => ':attribute harus mengandung :size anggota.',
],
'starts_with' => ':attribute harus diawali salah satu dari berikut: :values',
'string' => ':attribute harus berupa string.',
'timezone' => ':attribute harus berisi zona waktu yang valid.',
'unique' => ':attribute sudah ada sebelumnya.',
'uploaded' => ':attribute gagal diunggah.',
'url' => 'Format :attribute tidak valid.',
'uuid' => ':attribute harus merupakan UUID yang valid.',
/*
|---------------------------------------------------------------------------------------
| Baris Bahasa untuk Validasi Kustom
|---------------------------------------------------------------------------------------
|
| Di sini Anda dapat menentukan pesan validasi untuk atribut sesuai keinginan dengan menggunakan
| konvensi "attribute.rule" dalam penamaan barisnya. Hal ini mempercepat dalam menentukan
| baris bahasa kustom yang spesifik untuk aturan atribut yang diberikan.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|---------------------------------------------------------------------------------------
| Kustom Validasi Atribut
|---------------------------------------------------------------------------------------
|
| Baris bahasa berikut digunakan untuk menukar 'placeholder' atribut dengan sesuatu yang
| lebih mudah dimengerti oleh pembaca seperti "Alamat Surel" daripada "surel" saja.
| Hal ini membantu kita dalam membuat pesan menjadi lebih ekspresif.
|
*/
'attributes' => [
],
];
view raw validation.php hosted with ❤ by GitHub

Langkah selanjutnya adalah mengubah konfigurasi bahasa dari project laravel kita di dalam file config/app.php Menjadi seperti berikut :



/*
|-------------------------------------------------------------------
| Application Timezone
|-------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => 'Asia/Jakarta',
/*
|-------------------------------------------------------------------
| 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' => 'id',
/*
|-------------------------------------------------------------------
| 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' => 'id',
/*
|-------------------------------------------------------------------
| Faker Locale
|-------------------------------------------------------------------
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| localized telephone numbers, street address information and more.
|
*/
'faker_locale' => 'id_ID',


Enter fullscreen mode Exit fullscreen mode

#selesai

Setelah itu coba login untuk melihat hasilnya.

indonesian validation

Sekian sharing kita kali ini, semoga bermanfaat. pertanyaan lebih lanjut bisa ditanyakan di kolom komentar. Jika kalian merasa, artikel ini bermanfaat. Silahkan share ke teman-teman yang lain jg ya..

Salam Laravel Explorer !

Wassalamu’alaikum Warahmatullahi Wabarakatuh

*first published:

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post

Top comments (6)

Collapse
 
lutfifirdaus profile image
lutfifirdaus • Edited

Bro kalo ngubah ':date' di bawah ini jadi Indonesia gimana ya?

23 'before'          => ':attribute harus berisi tanggal sebelum :date.',
24 'before_or_equal' => ':attribute harus berisi tanggal sebelum atau sama dengan :date.',
Enter fullscreen mode Exit fullscreen mode

gua pas make itu ':date' nya jadi tetep bahasa inggris

Gambar kalimat validasi

Collapse
 
syofyanzuhad profile image
Syofyan Zuhad • Edited

itu tampil sesuai dgn value yg kamu masukin di validasinya
kemungkinan kodinganmu gini:

date => ['before:tomorrow']
Enter fullscreen mode Exit fullscreen mode

yang mana tomorrow itu bawaan bahasa dari validasi laravelnya, jadi kalo mau lebih jelas mungkin bisa kasi tanggal pake function php atau carbon (library tanggal)

'tanggal_mulai' => 'required|date|after:'.date('Y-m-d'),
// ATAU
'tanggal_mulai' => 'required|date|after:'.today(),
// ATAU
'tanggal_mulai' => 'required|date|after:'.Carbon::yesterday(),
// ATAU
'tanggal_mulai' => 'required|date|after:'.Carbon::tomorrow(),
Enter fullscreen mode Exit fullscreen mode
Collapse
 
muhamadabduh profile image
MuhAbduh

Bro, library nya udah abandoned dan diarahkan ke library lain yang ini : github.com/Laravel-Lang/lang

Collapse
 
ripanf profile image
Ripan Fauzi

thanks, masih relevan tutorialnya. keren

Collapse
 
satriyo profile image
Riyo Wicaksono

Thanks bro

Collapse
 
syofyanzuhad profile image
Syofyan Zuhad

sama-sama bro, btw blog (joglohub) nya keren.. 👍🏻

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay