ar.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. //! moment.js locale configuration
  2. //! locale : Arabic [ar]
  3. //! author : Abdel Said: https://github.com/abdelsaid
  4. //! author : Ahmed Elkhatib
  5. //! author : forabi https://github.com/forabi
  6. import moment from '../moment';
  7. var symbolMap = {
  8. 1: '١',
  9. 2: '٢',
  10. 3: '٣',
  11. 4: '٤',
  12. 5: '٥',
  13. 6: '٦',
  14. 7: '٧',
  15. 8: '٨',
  16. 9: '٩',
  17. 0: '٠',
  18. },
  19. numberMap = {
  20. '١': '1',
  21. '٢': '2',
  22. '٣': '3',
  23. '٤': '4',
  24. '٥': '5',
  25. '٦': '6',
  26. '٧': '7',
  27. '٨': '8',
  28. '٩': '9',
  29. '٠': '0',
  30. },
  31. pluralForm = function (n) {
  32. return n === 0
  33. ? 0
  34. : n === 1
  35. ? 1
  36. : n === 2
  37. ? 2
  38. : n % 100 >= 3 && n % 100 <= 10
  39. ? 3
  40. : n % 100 >= 11
  41. ? 4
  42. : 5;
  43. },
  44. plurals = {
  45. s: [
  46. 'أقل من ثانية',
  47. 'ثانية واحدة',
  48. ['ثانيتان', 'ثانيتين'],
  49. '%d ثوان',
  50. '%d ثانية',
  51. '%d ثانية',
  52. ],
  53. m: [
  54. 'أقل من دقيقة',
  55. 'دقيقة واحدة',
  56. ['دقيقتان', 'دقيقتين'],
  57. '%d دقائق',
  58. '%d دقيقة',
  59. '%d دقيقة',
  60. ],
  61. h: [
  62. 'أقل من ساعة',
  63. 'ساعة واحدة',
  64. ['ساعتان', 'ساعتين'],
  65. '%d ساعات',
  66. '%d ساعة',
  67. '%d ساعة',
  68. ],
  69. d: [
  70. 'أقل من يوم',
  71. 'يوم واحد',
  72. ['يومان', 'يومين'],
  73. '%d أيام',
  74. '%d يومًا',
  75. '%d يوم',
  76. ],
  77. M: [
  78. 'أقل من شهر',
  79. 'شهر واحد',
  80. ['شهران', 'شهرين'],
  81. '%d أشهر',
  82. '%d شهرا',
  83. '%d شهر',
  84. ],
  85. y: [
  86. 'أقل من عام',
  87. 'عام واحد',
  88. ['عامان', 'عامين'],
  89. '%d أعوام',
  90. '%d عامًا',
  91. '%d عام',
  92. ],
  93. },
  94. pluralize = function (u) {
  95. return function (number, withoutSuffix, string, isFuture) {
  96. var f = pluralForm(number),
  97. str = plurals[u][pluralForm(number)];
  98. if (f === 2) {
  99. str = str[withoutSuffix ? 0 : 1];
  100. }
  101. return str.replace(/%d/i, number);
  102. };
  103. },
  104. months = [
  105. 'يناير',
  106. 'فبراير',
  107. 'مارس',
  108. 'أبريل',
  109. 'مايو',
  110. 'يونيو',
  111. 'يوليو',
  112. 'أغسطس',
  113. 'سبتمبر',
  114. 'أكتوبر',
  115. 'نوفمبر',
  116. 'ديسمبر',
  117. ];
  118. export default moment.defineLocale('ar', {
  119. months: months,
  120. monthsShort: months,
  121. weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
  122. weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
  123. weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
  124. weekdaysParseExact: true,
  125. longDateFormat: {
  126. LT: 'HH:mm',
  127. LTS: 'HH:mm:ss',
  128. L: 'D/\u200FM/\u200FYYYY',
  129. LL: 'D MMMM YYYY',
  130. LLL: 'D MMMM YYYY HH:mm',
  131. LLLL: 'dddd D MMMM YYYY HH:mm',
  132. },
  133. meridiemParse: /ص|م/,
  134. isPM: function (input) {
  135. return 'م' === input;
  136. },
  137. meridiem: function (hour, minute, isLower) {
  138. if (hour < 12) {
  139. return 'ص';
  140. } else {
  141. return 'م';
  142. }
  143. },
  144. calendar: {
  145. sameDay: '[اليوم عند الساعة] LT',
  146. nextDay: '[غدًا عند الساعة] LT',
  147. nextWeek: 'dddd [عند الساعة] LT',
  148. lastDay: '[أمس عند الساعة] LT',
  149. lastWeek: 'dddd [عند الساعة] LT',
  150. sameElse: 'L',
  151. },
  152. relativeTime: {
  153. future: 'بعد %s',
  154. past: 'منذ %s',
  155. s: pluralize('s'),
  156. ss: pluralize('s'),
  157. m: pluralize('m'),
  158. mm: pluralize('m'),
  159. h: pluralize('h'),
  160. hh: pluralize('h'),
  161. d: pluralize('d'),
  162. dd: pluralize('d'),
  163. M: pluralize('M'),
  164. MM: pluralize('M'),
  165. y: pluralize('y'),
  166. yy: pluralize('y'),
  167. },
  168. preparse: function (string) {
  169. return string
  170. .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
  171. return numberMap[match];
  172. })
  173. .replace(/،/g, ',');
  174. },
  175. postformat: function (string) {
  176. return string
  177. .replace(/\d/g, function (match) {
  178. return symbolMap[match];
  179. })
  180. .replace(/,/g, '،');
  181. },
  182. week: {
  183. dow: 6, // Saturday is the first day of the week.
  184. doy: 12, // The week that contains Jan 12th is the first week of the year.
  185. },
  186. });