ar.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. // moment.js locale configuration
  2. // Locale: Arabic (ar)
  3. // Author: Abdel Said: https://github.com/abdelsaid
  4. // Changes in months, weekdays: Ahmed Elkhatib
  5. // Native plural forms: forabi https://github.com/forabi
  6. (function (factory) {
  7. if (typeof define === 'function' && define.amd) {
  8. define(['moment'], factory); // AMD
  9. } else if (typeof exports === 'object') {
  10. module.exports = factory(require('../moment')); // Node
  11. } else {
  12. factory((typeof global !== 'undefined' ? global : this).moment); // node or other global
  13. }
  14. }(function (moment) {
  15. var symbolMap = {
  16. '1': '١',
  17. '2': '٢',
  18. '3': '٣',
  19. '4': '٤',
  20. '5': '٥',
  21. '6': '٦',
  22. '7': '٧',
  23. '8': '٨',
  24. '9': '٩',
  25. '0': '٠'
  26. }, numberMap = {
  27. '١': '1',
  28. '٢': '2',
  29. '٣': '3',
  30. '٤': '4',
  31. '٥': '5',
  32. '٦': '6',
  33. '٧': '7',
  34. '٨': '8',
  35. '٩': '9',
  36. '٠': '0'
  37. }, pluralForm = function (n) {
  38. return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
  39. }, plurals = {
  40. s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
  41. m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
  42. h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
  43. d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
  44. M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
  45. y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
  46. }, pluralize = function (u) {
  47. return function (number, withoutSuffix, string, isFuture) {
  48. var f = pluralForm(number),
  49. str = plurals[u][pluralForm(number)];
  50. if (f === 2) {
  51. str = str[withoutSuffix ? 0 : 1];
  52. }
  53. return str.replace(/%d/i, number);
  54. };
  55. }, months = [
  56. 'كانون الثاني يناير',
  57. 'شباط فبراير',
  58. 'آذار مارس',
  59. 'نيسان أبريل',
  60. 'أيار مايو',
  61. 'حزيران يونيو',
  62. 'تموز يوليو',
  63. 'آب أغسطس',
  64. 'أيلول سبتمبر',
  65. 'تشرين الأول أكتوبر',
  66. 'تشرين الثاني نوفمبر',
  67. 'كانون الأول ديسمبر'
  68. ];
  69. return moment.defineLocale('ar', {
  70. months : months,
  71. monthsShort : months,
  72. weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
  73. weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
  74. weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
  75. longDateFormat : {
  76. LT : 'HH:mm',
  77. LTS : 'HH:mm:ss',
  78. L : 'DD/MM/YYYY',
  79. LL : 'D MMMM YYYY',
  80. LLL : 'D MMMM YYYY LT',
  81. LLLL : 'dddd D MMMM YYYY LT'
  82. },
  83. meridiemParse: /ص|م/,
  84. isPM : function (input) {
  85. return 'م' === input;
  86. },
  87. meridiem : function (hour, minute, isLower) {
  88. if (hour < 12) {
  89. return 'ص';
  90. } else {
  91. return 'م';
  92. }
  93. },
  94. calendar : {
  95. sameDay: '[اليوم عند الساعة] LT',
  96. nextDay: '[غدًا عند الساعة] LT',
  97. nextWeek: 'dddd [عند الساعة] LT',
  98. lastDay: '[أمس عند الساعة] LT',
  99. lastWeek: 'dddd [عند الساعة] LT',
  100. sameElse: 'L'
  101. },
  102. relativeTime : {
  103. future : 'بعد %s',
  104. past : 'منذ %s',
  105. s : pluralize('s'),
  106. m : pluralize('m'),
  107. mm : pluralize('m'),
  108. h : pluralize('h'),
  109. hh : pluralize('h'),
  110. d : pluralize('d'),
  111. dd : pluralize('d'),
  112. M : pluralize('M'),
  113. MM : pluralize('M'),
  114. y : pluralize('y'),
  115. yy : pluralize('y')
  116. },
  117. preparse: function (string) {
  118. return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
  119. return numberMap[match];
  120. }).replace(/،/g, ',');
  121. },
  122. postformat: function (string) {
  123. return string.replace(/\d/g, function (match) {
  124. return symbolMap[match];
  125. }).replace(/,/g, '،');
  126. },
  127. week : {
  128. dow : 6, // Saturday is the first day of the week.
  129. doy : 12 // The week that contains Jan 1st is the first week of the year.
  130. }
  131. });
  132. }));