//customized by Firas.Fatoum 6.4.2022
static TempStr numeralsToTxt_AR(real _num)
{
real numOfPennies = decround(frac(_num), 2);
real test = _num - frac(_num);
str zero;
str comma;
str and;
str cent;
int numOfTenths;
str 20 ones[19], tenths[9], hundreds, thousands, millions, billions, trillions;
int64 temp;
str 200 returntxt;
real modOperator(real a1, real a2)
{
int tmpi;
real tmp1, tmp2;
tmp1 = a1 / a2;
tmpi = real2int(tmp1);
tmp2 = tmpi;
return (tmp1 - tmp2)*a2;
}
str doubleDigit2ARTxt(real doubledigit,boolean _pennies = false)
{
str txt;
int firstDigit;
real tempdigit;
if(_pennies)
{
firstDigit = doubledigit * 10;
doubledigit = doubledigit * 100;
if(!firstDigit)
{
doubledigit = doubledigit mod 10;
//txt = zero + " " + ones[doubledigit];
txt = ones[doubledigit];
return txt;
}
}
tempdigit = doubledigit;
if (tempdigit >= 20)
{
tempdigit = tempdigit div 10;
txt = tenths[tempdigit];
doubledigit = doubledigit mod 10;
}
if (doubledigit >= 1)
{
txt = txt ? (ones[doubledigit] + and + txt) : ones[doubledigit];
}
return txt;
}
real checkPower(real _test,int64 _power)
{
int64 numOfPower;
if (_test >= _power)
{
numOfPower = _test div _power;
if (numOfPower >= 100)
{
temp = numOfPower div 100;
if(temp > 9)// The validation was previously on 2
{
returntxt = returntxt ? (returntxt + and + ones[temp] + ' ' + hundreds) :(returntxt + ' ' + ones[temp] + ' ' + hundreds);
}
else
{
switch(temp)
{
Case 1:
returntxt = returntxt ? (returntxt + and + hundreds) : (returntxt + ' ' + hundreds);
break;
Case 2:
// TO DO need to insert a label for two hundred in Arabic
returntxt = returntxt ? (returntxt + and + "مائتين") : returntxt + ' ' + "مائتين";
break;
Case 3:
// TO DO need to insert a label for three hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ثلاثمائة") : returntxt + ' ' + 'ثلاثمائة';
break;
Case 4:
// TO DO need to insert a label for four hundred in Arabic
returntxt = returntxt ? (returntxt + and + "اربعمائة") : returntxt + ' ' + "اربعمائة";
break;
Case 5:
// TO DO need to insert a label for five hundred in Arabic
returntxt = returntxt ? (returntxt + and + "خمسمائة") : returntxt + ' ' + "خمسمائة";
break;
Case 6:
// TO DO need to insert a label for six hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ستمائة") : returntxt + ' ' + "ستمائة";
break;
Case 7:
// TO DO need to insert a label for seven hundred in Arabic
returntxt = returntxt ? (returntxt + and + "سبعمائة") : returntxt + ' ' + "سبعمائة";
break;
Case 8:
// TO DO need to insert a label for eight hundred in Arabic
returntxt = returntxt ? (returntxt + and + "ثمانمائة") : returntxt + ' ' + "ثمانمائة";
break;
Case 9:
// TO DO need to insert a label for nine hundred in Arabic
returntxt = returntxt ? (returntxt + and + "تسعمائة") : returntxt + ' ' + "تسعمائة";
break;
}
}
numOfPower = numOfPower mod 100;
}
if(numOfPower > 2 && _power > 100)
{
returntxt = returntxt ? (returntxt + and + doubleDigit2ARTxt(real2int(numOfPower))) : (returntxt + ' ' + doubleDigit2ARTxt(real2int(numOfPower)));
}
else
{
if(returntxt && numOfPower)
{
returntxt = returntxt + and + ' ';
}
}
switch(_power)
{
case 1000000000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two trillions in Arabic
returntxt = returntxt + "تريليونين ";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + trillions) : (returntxt + ' ' + "تريليونات");
}
_test = modOperator(_test, 1000000000000.00);
break;
}
case 1000000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two billions in Arabic
returntxt = returntxt + "مليارين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + billions) : (returntxt + ' ' + "مليارات");
}
_test = modOperator(_test, 1000000000);
break;
}
case 1000000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two Millions in Arabic
returntxt = returntxt + "مليونين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + millions) : (returntxt + ' ' + "ملايين");
}
_test = modOperator(_test, 1000000);
break;
}
case 1000 :
{
if( numOfPower == 2)
{
// TO DO need to insert a label for two Thousands' in Arabic
returntxt = returntxt + "ألفين";
}
else
{
returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + thousands) : (returntxt + ' ' + "الاف");
}
_test = modOperator(_test, 1000);
break;
}
case 100 :
{
switch (numOfPower)
{
case 2:
returntxt = returntxt + "مائتين";
break;
case 3:
returntxt = returntxt +"ثلاثمائة";
break;
case 4:
returntxt = returntxt + "اربعمائة";
break;
case 5:
returntxt = returntxt + "خمسمائة";
break;
case 6:
returntxt = returntxt + "ستمائة";
break;
case 7:
returntxt = returntxt + "سبعمائة";
break;
case 8:
returntxt = returntxt + "ثمانمائة";
break;
case 9:
returntxt = returntxt + "تسعمائة";
break;
default:
returntxt = returntxt + ' ' + hundreds;
}
_test = modOperator(_test, 100);
break;
}
}
}
return _test;
}
//infolog.language("AR");
#Define.text_1('واحد')
#Define.text_2('اثنان')
#Define.text_3('ثلاثة')
#Define.text_4('اربعة')
#Define.text_5('خمسة')
#Define.text_6('ستة')
#Define.text_7('سبعة')
#Define.text_8('ثمانية')
#Define.text_9('تسعة')
#Define.text_10('عشرة')
#Define.text_11('احدى عشر')
#Define.text_12('اثنا عشر')
#Define.text_13('ثلاثة عشر')
#Define.text_14('اربعة عشر')
#Define.text_15('خمسة عشر')
#Define.text_16('ستة عشر')
#Define.text_17('سبعة عشر')
#Define.text_18('ثمانية عشر')
#Define.text_19('تسعة عشر')
#Define.text_20('عشرين')
#Define.text_30('ثلاثين')
#Define.text_40('اربعين')
#Define.text_50('خمسين')
#Define.text_60('ستين')
#Define.text_70('سبعين')
#Define.text_80('ثمانين')
#Define.text_90('تسعين')
#Define.text_100('مائة')
#Define.text_200('مائتان')
#Define.text_300('ثلاثمائة')
#Define.text_400('أربعمائة')
#Define.text_500('خمسمائة')
#Define.text_600('ستمائة')
#Define.text_700('سبعمائة')
#Define.text_800('ثمانمائة')
#Define.text_900('تسعمائة')
#Define.text_1000('الف')
#Define.text_1000000('مليون')
#Define.text_1000000000('بليون')
#Define.text_1000000000000('تريليون')
#Define.text_and('و')
#Define.text_only('فقط')
#Define.text_cent('هللــه')
#Define.text_comma('ريـال')
#Define.text_zero('صفر')
and = ' ' + #text_and + ' ';
comma = #text_comma;
zero = #text_zero;
cent = #text_cent;
ones[1] = #text_1;
ones[2] = #text_2;
ones[3] = #text_3;
ones[4] = #text_4;
ones[5] = #text_5;
ones[6] = #text_6;
ones[7] = #text_7;
ones[8] = #text_8;
ones[9] = #text_9;
ones[10] = #text_10;
ones[11] = #text_11;
ones[12] = #text_12;
ones[13] = #text_13;
ones[14] = #text_14;
ones[15] = #text_15;
ones[16] = #text_16;
ones[17] = #text_17;
ones[18] = #text_18;
ones[19] = #text_19;
tenths[1] = 'Not used';
tenths[2] = #text_20;
tenths[3] = #text_30;
tenths[4] = #text_40;
tenths[5] = #text_50;
tenths[6] = #text_60;
tenths[7] = #text_70;
tenths[8] = #text_80;
tenths[9] = #text_90;
hundreds = #text_100;
thousands = #text_1000;
millions = #text_1000000;
billions = #text_1000000000;
trillions = #text_1000000000000;
if(test == 0)
{
returntxt = zero;
}
else
{
test = checkPower(test, 1000000000000);
test = checkPower(test, 1000000000);
test = checkPower(test, 1000000);
test = checkPower(test, 1000);
test = checkPower(test, 100);
}
if(returntxt && test)
{
returntxt = returntxt + and + doubleDigit2ARTxt(real2int(test));
}
else
{
returntxt = returntxt + ' ' + doubleDigit2ARTxt(real2int(test));
}
if(numOfPennies)
{
//Removing the stars and addin the pound and cent wording to fullfil the Egyptian requierment
returntxt = returntxt + ' ' + comma + ' ' + and + doubleDigit2ARTxt(numOfPennies,true) + ' ' + cent + ' فقط لاغير ';
//returntxt = '***' + returntxt + ' ' + comma + ' ' + doubleDigit2ARTxt(numOfPennies,true);
}
else
{
//Removing the stars and the zeros if no cents to fullfil the Egyptian requierment
returntxt = returntxt + ' ' + comma + ' فقط لاغير ';
//returntxt = '***' + returntxt + ' ' + comma + ' ' + zero + ' ' + zero;
}
return returntxt;
}
Comments