Konversi Mata Uang Menjadi Teks dengan PHP dan API

Konversi Mata Uang Menjadi Teks dengan PHP dan API

Table of contents



Konversi Mata Uang Menjadi Teks dengan PHP dan API - Dalam dunia digital, pengolahan data angka sering kali menjadi kebutuhan utama, terutama dalam aplikasi yang melibatkan laporan keuangan, faktur, atau sistem transaksi. Salah satu fitur penting dalam hal ini adalah kemampuan untuk mengubah angka menjadi teks (terbilang), baik dalam bahasa Indonesia maupun Inggris, dengan tambahan kemampuan konversi mata uang secara otomatis. Artikel ini akan menjelaskan solusi tersebut menggunakan PHP. Baca juga post saya kemarin tentang Cara Dinamis Mengubah Angka ke Teks Terbilang dalam Mata Uang Rupiah

Mengapa Fungsi Terbilang Dibutuhkan?

Fungsi terbilang digunakan untuk mengubah angka numerik menjadi teks. Contoh sederhana adalah angka 100, yang dapat diubah menjadi “seratus rupiah” dalam bahasa Indonesia atau “one hundred dollars” dalam bahasa Inggris. Fungsi ini sangat bermanfaat untuk:

Meningkatkan Kejelasan Laporan: Teks yang menjelaskan angka sering kali lebih mudah dipahami, terutama dalam dokumen resmi.



Mendukung Beragam Bahasa dan Mata Uang: Layanan global membutuhkan fleksibilitas dalam menampilkan nilai dalam berbagai format mata uang.

Solusi yang Ditawarkan

Solusi ini menggabungkan dua fitur utama:

Konversi Mata Uang Otomatis

Menggunakan API kurs mata uang, angka dalam satu mata uang dapat secara otomatis diubah menjadi mata uang lain sebelum diproses lebih lanjut.

Mengubah Angka Menjadi Teks

Setelah dikonversi, angka tersebut diterjemahkan menjadi teks dengan format sesuai bahasa dan mata uang yang diinginkan.

Konversi mata uang

Implementasi dalam PHP

Solusi ini melibatkan tiga langkah utama:

Mengambil Kurs Mata Uang

Kurs mata uang diambil menggunakan API pihak ketiga seperti ExchangeRate API. Data ini memungkinkan konversi otomatis dari satu mata uang ke mata uang lain.

function fetchExchangeRate($fromCurrency, $toCurrency) {
    $apiUrl = "https://api.exchangerate-api.com/v4/latest/$fromCurrency"; // URL API
    $response = file_get_contents($apiUrl);
    if ($response === false) {
        return null; // Gagal mengambil data
    }

    $data = json_decode($response, true);
    if (!isset($data['rates'][$toCurrency])) {
        return null; // Kurs tidak ditemukan
    }

    return $data['rates'][$toCurrency];
}

Mengonversi Mata Uang

Nilai angka dikalikan dengan kurs untuk mendapatkan hasil konversi.

function convertCurrency($amount, $fromCurrency, $toCurrency) {
    $rate = fetchExchangeRate($fromCurrency, $toCurrency);
    if ($rate === null) {
        return null; // Gagal konversi
    }

    return $amount * $rate;
}

Fungsi Terbilang

Fungsi ini menerjemahkan angka menjadi teks dengan fleksibilitas dalam bahasa dan format mata uang.

function terbilang($angka, $lang = 'id', $currency = 'rupiah') {
    $angka = abs($angka);

    // Definisi teks angka dalam bahasa Indonesia dan Inggris
    $numbers = [
        'id' => ["", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"],
        'en' => ["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven"]
    ];

    $tens = [
        'id' => ["", "sepuluh", "dua puluh", "tiga puluh", "empat puluh", "lima puluh", "enam puluh", "tujuh puluh", "delapan puluh", "sembilan puluh"],
        'en' => ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
    ];

    $currencyNames = [
        'id' => [
            'rupiah' => 'rupiah',
            'dollar' => 'dolar',
            'euro' => 'euro'
        ],
        'en' => [
            'rupiah' => 'rupiah',
            'dollar' => 'dollar',
            'euro' => 'euro'
        ]
    ];

    if (!isset($numbers[$lang]) || !isset($tens[$lang])) {
        return "Language not supported.";
    }

    $huruf = $numbers[$lang];
    $puluhan = $tens[$lang];
    $currencyText = $currencyNames[$lang][$currency] ?? $currency;

    // Aturan terbilang
    if ($angka < 12) {
        return $huruf[$angka] . " " . $currencyText;
    } elseif ($angka < 20) {
        return $huruf[$angka - 10] . ($lang === 'id' ? " belas" : "teen") . " " . $currencyText;
    } elseif ($angka < 100) {
        return $puluhan[floor($angka / 10)] . ($angka % 10 > 0 ? " " . $huruf[$angka % 10] : "") . " " . $currencyText;
    } elseif ($angka < 200) {
        return ($lang === 'id' ? "seratus" : "one hundred") . " " . terbilang($angka % 100, $lang, $currency);
    } elseif ($angka < 1000) {
        return $huruf[floor($angka / 100)] . ($lang === 'id' ? " ratus " : " hundred ") . terbilang($angka % 100, $lang, $currency);
    } elseif ($angka < 1000000) {
        return terbilang(floor($angka / 1000), $lang, $currency) . ($lang === 'id' ? " ribu " : " thousand ") . terbilang($angka % 1000, $lang, $currency);
    } elseif ($angka < 1000000000) {
        return terbilang(floor($angka / 1000000), $lang, $currency) . ($lang === 'id' ? " juta " : " million ") . terbilang($angka % 1000000, $lang, $currency);
    } elseif ($angka < 1000000000000) {
        return terbilang(floor($angka / 1000000000), $lang, $currency) . ($lang === 'id' ? " miliar " : " billion ") . terbilang($angka % 1000000000, $lang, $currency);
    } elseif ($angka < 1000000000000000) {
        return terbilang(floor($angka / 1000000000000), $lang, $currency) . ($lang === 'id' ? " triliun " : " trillion ") . terbilang($angka % 1000000000000, $lang, $currency);
    }

    return "Out of range";
}

Menggabungkan Semua Fitur

Fungsi utama mengintegrasikan seluruh proses dari konversi mata uang hingga teks terbilang.

function formatDanTerbilang($angka, $fromCurrency = 'USD', $toCurrency = 'IDR', $lang = 'id', $currency = 'rupiah') {
    $convertedAmount = convertCurrency($angka, $fromCurrency, $toCurrency);
    if ($convertedAmount === null) {
        return "Failed to convert currency.";
    }

    $formattedCurrency = number_format($convertedAmount, 0, ',', '.');
    $terbilangText = terbilang($convertedAmount, $lang, $currency);

    return [
        'formatted' => $formattedCurrency,
        'terbilang' => $terbilangText
    ];
}

Contoh Penggunaan

Misalkan, Anda ingin mengubah angka 100 USD menjadi teks dalam format Rupiah:

$result = formatDanTerbilang(100, 'USD', 'IDR', 'id', 'rupiah');
print_r($result);

Hasil yang diperoleh:

Array ( [formatted] => 1.622.157 [terbilang] => satu rupiah juta enam ratus dua puluh dua rupiah ribu seratus lima puluh tujuh rupiah )

Lihat hasil penerapan kode diatas pada link demo ini.

Baca juga: Membuat Konversi Mata Uang Otomatis dengan PHP

Keunggulan Solusi

Fleksibilitas Bahasa dan Mata Uang

Sistem mendukung berbagai kombinasi bahasa dan mata uang untuk memenuhi kebutuhan global.

Otomatisasi Penuh

Konversi mata uang dilakukan secara otomatis menggunakan API, sehingga mengurangi kesalahan manual.

Kemudahan Implementasi

Solusi ini dirancang untuk mudah diintegrasikan ke dalam aplikasi PHP.

Kesimpulan

Mengubah angka menjadi teks terbilang, ditambah dengan kemampuan konversi mata uang otomatis, memberikan fleksibilitas dan kejelasan dalam pengolahan data angka. Dengan solusi berbasis PHP ini, pengembang dapat menciptakan aplikasi yang lebih cerdas dan user-friendly, terutama dalam konteks keuangan dan transaksi.

Implementasikan solusi ini pada proyek Anda untuk memberikan pengalaman pengguna yang lebih baik!



Artikel Terkait