//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; }