3. Hari dan Bulan (Indonesia)

PHP: Menampilkan Hari dan Bulan Dalam Bahasa Indonesia

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 pun DateTime::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.

KodeKeteranganNilai Kembalian
dUrutan hari dalam bulan, diikuti angka 0 untuk hari < 1001-31
eUrutan hari dalam bulan, tidak diikuti angka 01-31
aNama hari, hanya 3 karakter. Nama hari sesuai dengan pilihan lokalisasiMon - Sun
ANama hari secara penuh. Nama disesuaikan dengan pilihan lokalisasiSunday - Saturday

Kode format bulan

Beberapa kode format bulan yang sering digunakan di dalam bahasa pemrograman PHP.

KodeKeteranganNilai Kembalian
mUrutan bulan dalam tahun, diikuti angka 0 untuk hari < 1001-12
bNama pendek dari suatu bulan, hanya 3 karakter. Nama disesuaikan dengan pilihan lokalisasiJan-Dec
BNama lengkap dari suatu bulan. Nama disesuaikan dengan pilihan lokalisasiJanuary - December

Kode format tahun

Beberapa kode format tahun yang sering digunakan di dalam bahasa pemrograman PHP.

KodeKeteranganNilai Kembalian
YMenampilkan 4 digit tahunContoh: 1990 - 2030
yMenampilkan hanya 2 digit terakhir dari tahunContoh: 90 - 30

Kode format waktu

Beberapa kode format waktu yang sering digunakan di dalam bahasa pemrograman PHP.

KodeKeteranganNilai Kembalian
IJam dalam format 12-hour01-12
HJam dalam format 24-hour01-24
PLowercase Ante meridiem and Post meridiemam-pm
pUppercase Ante meridiem and Post meridiemAM-PM
MMenit dengan diikuti angka 001-59
SDetik dengan diikuti angka 001-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