Number to Thaana Converter for Rufiyaa

Number to Thaana Converter for Rufiyaa
number to thaana

GitHub - siyamex/Number-to-Rufiyaa-in-Thaana: Convert Number to Rufiyaa in Thaana
Convert Number to Rufiyaa in Thaana. Contribute to siyamex/Number-to-Rufiyaa-in-Thaana development by creating an account on GitHub.

The Thaana script is used in the Maldives for the Dhivehi language, and converting numbers into Thaana, especially for Rufiyaa (ރުފިޔާ), is a unique and useful tool. In this guide, we'll show you how to create a fully functional "Number to Thaana Converter" app using JavaScript and HTML.


Features of the App

  1. Converts numbers into Thaana text.
  2. Handles decimal points to include laari (ލާރި).
  3. Supports numbers up to trillions with correct Thaana wordings.

Step-by-Step Implementation

1. Basic HTML Structure

We start with a clean HTML file for the UI. The layout includes:

  • An input box to enter numbers.
  • A button to trigger the conversion.
  • A result area to display the converted Thaana text.

Here’s the HTML code:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Number to Thaana Converter</title>
<style>
body
{
font-family: Arial, sans-serif;
text-align: center;
background-color: #f9f9f9;
color: #333;
padding: 20px;
}
h1 {
font-size: 24px;
color: #444;
}
input[type="text"] {
padding: 10px;
font-size: 16px;
margin: 10px 0;
width: 200px;
border: 1px solid #ccc;
border-radius: 5px;
}
button {
padding: 10px 20px;
font-size: 16px;
color: #fff;
background-color: #007bff;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
#result {
margin-top: 20px;
font-size: 20px;
color: #007bff;
}
</style>
</head>
<body>
<h1>Number to Thaana Converter</h1>
<input type="text" id="numberInput" placeholder="Enter a number (e.g., 1.50)" />
<button onclick="convertToThaana()">Convert</button>
<div id="result"></div>
</body>
</html>


2. JavaScript Logic

a. Thaana Number Arrays

We define arrays for:

  • Units (ehbari): Numbers 1-29.
  • Tens (dhihabari): Multiples of 10.
  • Place Values (sunbari): Thousand, million, etc.

javascript

const ehbari = ["", "އެއް", "ދެ", "ތިން", "ހަތަރު", "ފަސް", "ހަ", "ހަތް", "އަށް", "ނުވަ", "ދިހަ", "އެގާރަ", "ބާރަ", "ތޭރަ", "ސާދަ", "ފަނަރަ", "ސޯޅަ", "ސަތާރަ", "އަށާރަ", "ނަވާރަ", "ވިހި", "އެކާވީސް", "ބާވީސް", "ތޭވީސް", "ސައުވީސް", "ފަންސަވީސް", "ސައްބީސް", "ހަތާވީސް", "އަށާވީސް", "ނަވާވީސް"];
const dhihabari = ["ސުން", "ދިހަ", "ވިހި", "ތިރީސް", "ސާޅީސް", "ފަންސާސް", "ފަސްދޮޅަސް", "ހައްދިހަ", "އައްޑިހަ", "ނުވަދިހަ"];
const sunbari = ["", "ހާސް", "މިލިޔަން", "ބިލިޔަން", "ޓްރިލިޔަން"];

b. Conversion Logic

We break the number into thousands, hundreds, and units, converting each part recursively.

javascript

function thousandSub(number) {
if (number <= 0 || number <= 29) {
return ehbari[number];
} else if (number <= 99) {
return dhihabari[Math.floor(number / 10)] + (number % 10 !== 0 ? " " + ehbari[number % 10] : "");
} else {
const hundreds = Math.floor(number / 100);
const remainder = number % 100;
return ehbari[hundreds] + "ސަތޭކަ " + thousandSub(remainder);
}
}

function thousandUp(number) {
const chunks = [];
while (number > 0) {
chunks.push(number % 1000);
number = Math.floor(number / 1000);
}
return chunks.reverse().map((chunk, index) => thousandSub(chunk) + " " + sunbari[chunks.length - 1 - index]).join(" ").trim();
}

c. Full Conversion

Combine the integer and decimal parts into Rufiyaa and Laari.

javascript

function convertToThaana() {
const numberInput = document.getElementById("numberInput").value.trim();
if (!numberInput || isNaN(parseFloat(numberInput))) {
document.getElementById("result").innerText = "Please enter a valid number!";
return;
}
const [integerPart, decimalPart] = numberInput.split(".");
const number = parseInt(integerPart, 10);
const laari = decimalPart ? parseInt(decimalPart.padEnd(2, "0"), 10) : 0;

let result = thousandUp(number) + " ރުފިޔާ";
if (laari > 0) result += " " + thousandSub(laari) + " ލާރި";

document.getElementById("result").innerText = result;
}


Try It Yourself

The full code is available above—copy, paste, and run it in your browser to test the "Number to Thaana Converter" for Rufiyaa. Let us know your thoughts! 😊

Read more