Pendahuluan
Pada dua pertemuan sebelumnya, kita telah mempelajari bagaimana cara menampilkan nama hari dan nama bulan dengan PHP. Baik menggunakan pendekatan prosedural dengan fungsi date()
, atau dengan pendekatan objek menggunakan kelas bawaan PHP bernama DateTime
.
Perhatikan contoh berikut:
<?php
# pendekatan prosedural
echo date('D M y, H:i') . '<br>';
# pendekatan objek
$hariIni = new DateTime();
echo $hariIni->format('l F Y, H:i') . '<br>';
Kedua kode program di atas, ketika saya eksekusi, menghasilkan output sebagai berikut:
Thu Feb 20, 17:27
Thursday February 2020, 17:27
Nah permasalahannya adalah, nama hari dan bulannya ditulis dalam Bahasa Inggris. Sedangkan kita inginnya agar nama hari dan nama bulan tersebut ditulis dalam Bahasa Indonesia, seperti ini:
Kamis 20 Februari 2020, 17:27
Kam 20 Feb 2020, 17:27
Bagaimana caranya?
Dalam tutorial ini, insyaallah kita akan membahas beberapa cara yang bisa kita lakukan untuk menampilkan nama hari dan nama bulan dalam Bahasa Indonesia.
Solusi 1: Mengganti Lokalisasi PHP (Direkomendasikan)
Cara yang pertama adalah dengan mengganti lokalisasi PHP kita menjadi berbahasa Indonesia. Menurut Wikipedia Bahasa Indonesia, kata locale dalam Bahasa Inggris bisa diterjemahkan dengan kata “lokalisasi” atau bisa juga diterjemahkan dengan “pelokalan” [1].
Ia adalah suatu istilah komputer untuk penyesuaian terjemahan bahasa suatu perangkat lunak ke bahasa lokal agar bisa lebih mudah digunakan oleh penduduk. Tidak hanya terjemahan saja, tapi lokalisasi komputer juga berkaitan dengan hal yang lain seperti: format mata uang, format penulisan angka, dan format tanggal dan waktu pada suatu daerah tertentu.
Nah, dengan mengganti lokalisasi PHP menjadi Bahasa Indonesia, kita tidak perlu melakukan perubahaan yang berarti pada kode program kita. Kode program kita tetap seperti sediaka kala tanpa melakukan tambahan yang panjang lagi rumit.
Bagaimana caranya?
Pastikan sistem operasi kita mendukung lokalisasi Bahasa Indonesia
Umumnya, semua sistem operasi mendukung lokalisasi dari berbagai bahasa dunia. Termasuk Indonesia.
Akan tetapi, perlu dipastikan bahwa lokalisasi tersebut sudah terpasang pada sistem yang kita gunakan: baik Windows, mau pun unix-based seperti Linux atau Mac OS.
Lokalisasi tersebut tidak perlu aktif sebagai lokalisasi utama, kita tetap bisa menggunakan Bahasa Inggris pada sistem kita dan di saat yang sama Bahasa Indonesia juga dalam keadaan terpasang.
Periksa Lokalisasi Aktif Pada Linux
Jika kita menggunakan linux, kita bisa memeriksa lokalisasi yang aktif pada sistem kita menggunakan perintah berikut:
locale -a
Pada Ubuntu yang saya gunakan, output yang saya dapatkan adalah seperti ilustrasi berikut:
C
C.UTF-8
en_AG.utf8
...
en_US.utf8
...
id_ID.utf8
POSIX
Di dalam daftar locales yang terpasang di sistem yang saya gunakan adalah: id_ID.utf8
yang menunjukkan bahwa ia adalah Bahasa Indonesia.
Menambahkan Lokalisasi Bahasa Indonesia di Linux
Jika di sistem atau server yang anda gunakan ternyata belum terpasang lokalisasi Bahasa Indonesia, anda perlu memasangnya terlebih dahulu.
Memasang Lokalisasi di Ubuntu
Untuk pengguna Ubuntu, anda bisa melakukan perintah berikut:
sudo locale-gen id_ID
sudo locale-gen id_ID.UTF-8
Lalu update lokalisasi dengan perintah:
sudo update-locale
Mengganti Lokalisasi PHP
Untuk mengganti lokalisasi pada PHP, kita bisa menggunakan perintah setlocale
. Perhatikan kode program berikut:
<?php
setlocale(LC_ALL, 'id_ID');
// atau
setlocale(LC_ALL, 'id_ID.utf8'); // tergantung dengan lokalisasi yang terpasang pada sistem
NB: untuk pengguna windows, anda bisa menggunakan kode id_ID
untuk Bahasa Indonesia sesuai dengan Language Identifier Constants and Strings dan juga kaidah penamaan kode bahasa pada halaman Language and Country/Region Strings.
Menampilkan Nama Hari dan Bulan Dalam Bahasa Indonesia
Langkah selanjutnya adalah menampilkan nama hari dan bulan dengan Bahasa Indonesia.
Kita punya satu masalah, bahwasanya fungsi date()
mau pun fungsi DateTime::format()
tidak mendukung pelokalan sistem. Ia hanya bisa menampilkan format tanggal dalam Bahasa Indonesia saja.
Sebagai alternatifnya, kita bisa menggunakan fungsi strftime()
untuk menampilkan format tanggal sesuai dengan lokalisasi yang telah diatur. Fungsi strftime()
menerima dua parameter:
- Format: yaitu kode tertentu yang merepresentasikan bagaimana tanggal dan waktu akan ditampilkan. Ia memiliki kode yang berbeda dengan fungsi
date()
mau punDateTime::format()
. - Timestamp: yaitu jarak antara suatu waktu dari tanggal 1 Januari 1970 dalam satuan detik.
Perhatikan contoh lengkap berikut:
<?php
setlocale(LC_TIME, 'id_ID.utf8');
$hariIni = new DateTime();
# lokalisasi tidak berpengaruh
echo $hariIni->format('l F Y, H:i') . '<br>';
echo $hariIni->format('D M y, H:i') . '<br>';
echo "<br>";
# lokalisasi berpengaruh
echo strftime('%A %d %B %Y, %H:%M', $hariIni->getTimestamp()) . '<br>';
echo strftime('%a %d %b %Y, %H:%M', $hariIni->getTimestamp()) . '<br>';
Kode program di atas akan menampilkan hasil kira-kira seperti berikut ini (tergantung kapan kode program tersebut dieksekusi):
Thu Feb 20, 17:27
Thursday February 2020, 17:27
Kamis 20 Februari 2020, 17:27
Kam 20 Feb 2020, 17:27
Format Tanggal dan Waktu untuk fungsi strftime()
Fungsi strftime()
mengikuti format tanggal dan waktu yang berbeda dari fungsi date()
mau pun fungsi DateTime::format()
.
Ini memang agak sedikit membingungkan. Akan tetapi cara kerjanya sama persis. Pun, kita tidak perlu menghafal setiap formatnya, kok.
Berikut ini beberapa format umum yang mungkin anda butuhkan.
Kode format hari
Beberapa kode format hari yang sering digunakan di dalam bahasa pemrograman PHP.
Kode | Keterangan | Nilai Kembalian |
---|---|---|
d |
Urutan hari dalam bulan, diikuti angka 0 untuk hari < 10 | 01-31 |
e |
Urutan hari dalam bulan, tidak diikuti angka 0 | 1-31 |
a |
Nama hari, hanya 3 karakter. Nama hari sesuai dengan pilihan lokalisasi | Mon - Sun |
A |
Nama hari secara penuh. Nama disesuaikan dengan pilihan lokalisasi | Sunday - Saturday |
Kode format bulan
Beberapa kode format bulan yang sering digunakan di dalam bahasa pemrograman PHP.
Kode | Keterangan | Nilai Kembalian |
---|---|---|
m |
Urutan bulan dalam tahun, diikuti angka 0 untuk hari < 10 | 01-12 |
b |
Nama pendek dari suatu bulan, hanya 3 karakter. Nama disesuaikan dengan pilihan lokalisasi | Jan-Dec |
B |
Nama lengkap dari suatu bulan. Nama disesuaikan dengan pilihan lokalisasi | January - December |
Kode format tahun
Beberapa kode format tahun yang sering digunakan di dalam bahasa pemrograman PHP.
Kode | Keterangan | Nilai Kembalian |
---|---|---|
Y |
Menampilkan 4 digit tahun | Contoh: 1990 - 2030 |
y |
Menampilkan hanya 2 digit terakhir dari tahun | Contoh: 90 - 30 |
Kode format waktu
Beberapa kode format waktu yang sering digunakan di dalam bahasa pemrograman PHP.
Kode | Keterangan | Nilai Kembalian |
---|---|---|
I |
Jam dalam format 12-hour | 01-12 |
H |
Jam dalam format 24-hour | 01-24 |
P |
Lowercase Ante meridiem and Post meridiem | am-pm |
p |
Uppercase Ante meridiem and Post meridiem | AM-PM |
M |
Menit dengan diikuti angka 0 | 01-59 |
S |
Detik dengan diikuti angka 0 | 01-59 |
Solusi 2: Terjemah Manual Dengan Percabangan Switch-Case
Cara yang kedua adalah dengan membuat fungsi percabangan switch case
dan melakukan penerjemahan secara manual.
Dan ini adalah cara yang saya kurang sukai karena ia menambah pekerjaan. Karena kita membuat sesuatu yang sama dengan apa yang sebenarnya sudah ada secara default. Bahkan yang default jauh lebih bagus dari pada buatan kita.
Tapi untuk belajar dan mengasah logika, cara yang kedua ini tidak ada salahnya sama sekali bahkan bisa membantu proses belajar kita untuk menjadi programmer PHP yang handal.
Silakan perhatikan contoh berikut:
<?php
function hariIndo ($hariInggris) {
switch ($hariInggris) {
case 'Sunday':
return 'Minggu';
case 'Monday':
return 'Senin';
case 'Tuesday':
return 'Selasa';
case 'Wednesday':
return 'Rabu';
case 'Thursday':
return 'Kamis';
case 'Friday':
return 'Jumat';
case 'Saturday':
return 'Sabtu';
default:
return 'hari tidak valid';
}
}
Lalu kita bisa panggil fungsi di atas sebagai berikut:
<?php
$hariBahasaInggris = date('l');
$hariBahasaIndonesia = hariIndo($hariBahasaInggris);
echo "Bahasa Inggris: {$hariBahasaInggris} <br>";
echo "Bahasa Indonesia: {$hariBahasaIndonesia} <br>";
Output dari kode program di atas adalah:
Bahasa Inggris: Thursday
Bahasa Indonesia: Kamis
Solusi 3: Menggunakan Pustaka Pihak Ketiga
Solusi yang ketiga adalah menggunakan pustaka pihak ketiga yang bernama Carbon. Ia adalah pustaka PHP yang menyederhakan pekerjaan programmer ketika harus berhadapan dengan tanggal dan waktu.
Cara ini sebenarnya adalah cara yang paling saya rekomendasikan untuk digunakan pada projek betulan. Akan tetapi pada seri tutorial php tingkat menengah ini, saya kira cara yang pertama masih cara yang paling sesuai untuk dilakukan.
Sebagai gambaran, dengan menggunakan Carbon, anda cukup menuliskan kode program seperti berikut ini:
<?php
# tanggal sekarang dalam bahasa indo
$hariIni = \Carbon\Carbon::now()->locale('id');
# tampilkan nama bulan
echo $hariIni->monthName; # Februari
Kesimpulan
Dalam pertemuan ini, kita telah membahas 3 cara untuk menampilkan nama hari dan nama bulan di PHP dalam Bahasa Indonesia.
Cara yang pertama adalah dengan melakukan pengaturan lokalisasi, dan ini adalah cara yang direkomendasikan. Cara yang kedua adalah dengan melakukan penterjemahan manual memanfaatkan logika percabangan switch case
. Dan cara yang ketiga adalah dengan menggunakan pustaka pihak ketiga yaitu Carbon.
Pembahasan Selanjutnya
Insyaallah pada pembahasan selanjutnya pada seri tutorial PHP tingkat menengah ini kita akan membahas tentang ruang lingkup variabel dan apa itu variabel global.
Jangan lupa share tutorial PHP ini ke kawan-kawan kalian, ya!
Terima kasih banyak!
Referensi
[1] https://id.wikipedia.org/wiki/Internasionalisasi_dan_pelokalan