Skip to content

Instantly share code, notes, and snippets.

@amr3k
Created October 15, 2022 10:33
Show Gist options
  • Save amr3k/d3998052c368e7696f2cae246c608e57 to your computer and use it in GitHub Desktop.
Save amr3k/d3998052c368e7696f2cae246c608e57 to your computer and use it in GitHub Desktop.
[Arabic] Stringify numbers
export function stringifyNumber(num: number, gender: 'male' | 'female' = 'male') {
const special = {
male: ['', 'الأول', 'الثاني', 'الثالث', 'الرابع', 'الخامس', 'السادس', 'السابع', 'الثامن', 'التاسع', 'العاشر', 'الحادي عشر', 'الثاني عشر', 'الثالث عشر', 'الرابع عشر', 'الخامس عشر', 'السادس عشر', 'السابع عشر', 'الثامن عشر', 'التاسع عشر'],
female: ['', 'الأولى', 'الثانية', 'الثالثة', 'الرابعة', 'الخامسة', 'السادسة', 'السابعة', 'الثامنة', 'التاسعة', 'العاشرة', 'الحادية عشر', 'الثانية عشر', 'الثالثة عشر', 'الرابعة عشر', 'الخامسة عشر', 'السادسة عشر', 'السابعة عشر', 'الثامنة عشر', 'التاسعة عشر']
};
const deca = ['عشرون', 'ثلاثون', 'أربعون', 'خمسون', 'ستون', 'سبعون', 'ثمانون', 'تسعون'];
if (num < 20) return special[gender][num];
if (num % 10 === 0) return 'ال' + deca[Math.floor(num / 10) - 2];
return special[gender][num % 10] + ' و' + 'ال' + deca[Math.floor(num / 10) - 2];
}
console.log(stringifyNumber(39)); // "التاسع والثلاثون"
console.log(stringifyNumber(12, 'female')); // "الثانية عشر"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment