create-warlock 4.0.29 → 4.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/package.json +1 -1
  2. package/templates/warlock/package.json +7 -7
  3. package/templates/warlock/src/app/auth/controllers/forgot-password.controller.ts +46 -0
  4. package/templates/warlock/src/app/auth/controllers/login.controller.ts +31 -0
  5. package/templates/warlock/src/app/auth/controllers/logout-all.controller.ts +16 -0
  6. package/templates/warlock/src/app/auth/controllers/logout.controller.ts +16 -0
  7. package/templates/warlock/src/app/auth/controllers/me.controller.ts +13 -0
  8. package/templates/warlock/src/app/auth/controllers/refresh-token.controller.ts +31 -0
  9. package/templates/warlock/src/app/auth/controllers/reset-password.controller.ts +25 -0
  10. package/templates/warlock/src/app/auth/main.ts +9 -0
  11. package/templates/warlock/src/app/auth/models/otp/index.ts +1 -0
  12. package/templates/warlock/src/app/auth/models/otp/migrations/22-12-2025_10-30-20.otp-migration.ts +22 -0
  13. package/templates/warlock/src/app/auth/models/otp/otp.model.ts +75 -0
  14. package/templates/warlock/src/app/auth/requests/login.request.ts +10 -0
  15. package/templates/warlock/src/app/auth/requests/reset-password.request.ts +11 -0
  16. package/templates/warlock/src/app/auth/routes.ts +22 -0
  17. package/templates/warlock/src/app/auth/services/auth.service.ts +47 -0
  18. package/templates/warlock/src/app/auth/services/otp.service.ts +174 -0
  19. package/templates/warlock/src/app/auth/services/reset-password.service.ts +35 -0
  20. package/templates/warlock/src/app/auth/utils/auth-error-code.ts +6 -0
  21. package/templates/warlock/src/app/auth/utils/locales.ts +89 -0
  22. package/templates/warlock/src/app/auth/utils/types.ts +14 -0
  23. package/templates/warlock/src/app/shared/services/scheduler.service.ts +3 -0
  24. package/templates/warlock/src/app/shared/utils/locales.ts +728 -0
  25. package/templates/warlock/src/app/users/commands/hello-world.command.ts +8 -0
  26. package/templates/warlock/src/app/users/controllers/get-users.controller.ts +10 -0
  27. package/templates/warlock/src/app/users/main.ts +0 -0
  28. package/templates/warlock/src/app/users/models/user/index.ts +1 -0
  29. package/templates/warlock/src/app/users/models/user/migrations/11-12-2025_23-58-03-user.migration.ts +14 -0
  30. package/templates/warlock/src/app/users/models/user/user.model.ts +46 -0
  31. package/templates/warlock/src/app/users/repositories/users-repository.ts +66 -0
  32. package/templates/warlock/src/app/users/repositories/users.repository.ts +27 -0
  33. package/templates/warlock/src/app/users/routes.ts +4 -0
  34. package/templates/warlock/src/app/users/services/get-new-customers.ts +5 -0
  35. package/templates/warlock/src/app/users/services/get-users.service.ts +5 -0
  36. package/templates/warlock/src/app/users/services/list-users.service.ts +7 -0
  37. package/templates/warlock/src/app/users/services/login-social.ts +19 -0
  38. package/templates/warlock/src/app/utils/output.ts +5 -0
  39. package/templates/warlock/src/app/utils/router.ts +30 -0
  40. package/templates/warlock/src/config/app.ts +12 -0
  41. package/templates/warlock/src/config/auth.ts +18 -0
  42. package/templates/warlock/src/config/cache.ts +60 -0
  43. package/templates/warlock/src/config/database.ts +19 -0
  44. package/templates/warlock/src/config/http.ts +23 -0
  45. package/templates/warlock/src/config/log.ts +22 -0
  46. package/templates/warlock/src/config/mail.ts +16 -0
  47. package/templates/warlock/src/config/notifications.ts +11 -0
  48. package/templates/warlock/src/config/storage.ts +21 -0
  49. package/templates/warlock/src/config/tests.ts +5 -0
  50. package/templates/warlock/src/config/validation.ts +7 -0
@@ -0,0 +1,728 @@
1
+ import { groupedTranslations } from "@mongez/localization";
2
+
3
+ groupedTranslations("validation", {
4
+ required: {
5
+ en: "The :input field is required.",
6
+ ar: ":input مطلوب.",
7
+ },
8
+ present: {
9
+ en: "The :input field must be present.",
10
+ ar: ":input يجب أن يكون موجود.",
11
+ },
12
+ equal: {
13
+ en: "The :input must equal :value.",
14
+ ar: ":input يجب أن يساوي :value.",
15
+ },
16
+ equalsField: {
17
+ en: "The :input must match :field.",
18
+ ar: ":input يجب أن يتطابق مع :field.",
19
+ },
20
+ notEqualsField: {
21
+ en: "The :input must not match :field.",
22
+ ar: ":input يجب ألا يتطابق مع :field.",
23
+ },
24
+ when: {
25
+ en: "The :input validation failed.",
26
+ ar: "فشل التحقق من :input.",
27
+ },
28
+ egyptianPhoneNumber: {
29
+ en: "Make sure the :input is a valid Egyptian phone number.",
30
+ ar: ":input يجب أن يكون رقم هاتف صالح.",
31
+ },
32
+ missing: {
33
+ en: "The :input field can not be present.",
34
+ ar: ":input لا يمكن أن يكون موجود.",
35
+ },
36
+ unique: {
37
+ en: "The :input has already been taken.",
38
+ ar: ":input مستخدم من قبل.",
39
+ },
40
+ uniqueExceptCurrentUser: {
41
+ en: "The :input has already been taken.",
42
+ ar: ":input مستخدم من قبل.",
43
+ },
44
+ uniqueExceptCurrentId: {
45
+ en: "The :input has already been taken.",
46
+ ar: ":input مستخدم من قبل.",
47
+ },
48
+ object: {
49
+ en: ":input must be an object.",
50
+ ar: ":input يجب أن يكون كائن.",
51
+ },
52
+ uploadable: {
53
+ en: ":input must be a uploadable type, upload hash must be passed.",
54
+ ar: ":input يجب أن يكون من نوع قابل للتحميل، يجب تمرير هاش التحميل.",
55
+ },
56
+ exists: {
57
+ en: "The selected :input does not exist in our database records.",
58
+ ar: ":input المحدد غير موجود في سجلات قاعدة البيانات الخاصة بنا.",
59
+ },
60
+ matches: {
61
+ en: ":input must match :field.",
62
+ ar: ":input يجب أن يتطابق مع :field.",
63
+ },
64
+ min: {
65
+ en: ":input must be at least :min.",
66
+ ar: ":input يجب أن يكون على الأقل :min.",
67
+ },
68
+ max: {
69
+ en: ":input must be at most :max.",
70
+ ar: ":input يجب أن يكون على الأكثر :max.",
71
+ },
72
+ greaterThan: {
73
+ en: ":input must be greater than :value.",
74
+ ar: ":input يجب أن يكون أكثر من :value.",
75
+ },
76
+ greaterThanOrEqual: {
77
+ en: ":input must be greater than or equal to :value.",
78
+ ar: ":input يجب أن يكون أكثر من أو يساوي :value.",
79
+ },
80
+ lessThan: {
81
+ en: ":input must be less than :value.",
82
+ ar: ":input يجب أن يكون أقل من :value.",
83
+ },
84
+ lessThanOrEqual: {
85
+ en: ":input must be less than or equal to :value.",
86
+ ar: ":input يجب أن يكون أقل من أو يساوي :value.",
87
+ },
88
+ betweenNumbers: {
89
+ en: ":input must be between :min and :max.",
90
+ ar: ":input يجب أن يكون بين :min و :max.",
91
+ },
92
+ positive: {
93
+ en: ":input must be positive.",
94
+ ar: ":input يجب أن يكون موجب.",
95
+ },
96
+ negative: {
97
+ en: ":input must be negative.",
98
+ ar: ":input يجب أن يكون سالب.",
99
+ },
100
+ odd: {
101
+ en: ":input must be an odd number.",
102
+ ar: ":input يجب أن يكون عدد فردي.",
103
+ },
104
+ even: {
105
+ en: ":input must be an even number.",
106
+ ar: ":input يجب أن يكون عدد زوجي.",
107
+ },
108
+ modulo: {
109
+ en: ":input must be divisible by :modulo.",
110
+ ar: ":input يجب أن يكون قابلاً للقسمة على :modulo.",
111
+ },
112
+ file: {
113
+ en: ":input must be a file.",
114
+ ar: ":input يجب أن يكون ملف.",
115
+ },
116
+ files: {
117
+ en: ":input must be an array of files.",
118
+ ar: ":input يجب أن يكون مجموعة من الملفات.",
119
+ },
120
+ maxFileSize: {
121
+ en: ":input file size must not exceed :maxSize.",
122
+ ar: "حجم ملف :input يجب ألا يتجاوز :maxSize.",
123
+ },
124
+ minFileSize: {
125
+ en: ":input file size must be at least :minSize.",
126
+ ar: "حجم ملف :input يجب أن يكون على الأقل :minSize.",
127
+ },
128
+ minWidth: {
129
+ en: ":input image width must be at least :minWidth pixels.",
130
+ ar: "عرض صورة :input يجب أن يكون على الأقل :minWidth بكسل.",
131
+ },
132
+ maxWidth: {
133
+ en: ":input image width must be at most :maxWidth pixels.",
134
+ ar: "عرض صورة :input يجب أن يكون على الأكثر :maxWidth بكسل.",
135
+ },
136
+ minHeight: {
137
+ en: ":input image height must be at least :minHeight pixels.",
138
+ ar: "ارتفاع صورة :input يجب أن يكون على الأقل :minHeight بكسل.",
139
+ },
140
+ maxHeight: {
141
+ en: ":input image height must be at most :maxHeight pixels.",
142
+ ar: "ارتفاع صورة :input يجب أن يكون على الأكثر :maxHeight بكسل.",
143
+ },
144
+ image: {
145
+ en: ":input must be an image.",
146
+ ar: ":input يجب أن يكون صورة.",
147
+ },
148
+ images: {
149
+ en: ":input must be an array of images.",
150
+ ar: ":input يجب أن يكون مجموعة من الصور.",
151
+ },
152
+ minLength: {
153
+ en: ":input must be at least :minLength characters.",
154
+ ar: ":input يجب أن يكون على الأقل :minLength حرف.",
155
+ },
156
+ maxLength: {
157
+ en: ":input must be at most :maxLength characters.",
158
+ ar: ":input يجب أن يكون على الأكثر :maxLength حرف.",
159
+ },
160
+ betweenLength: {
161
+ en: ":input must be between :minLength and :maxLength characters.",
162
+ ar: ":input يجب أن يكون بين :minLength و :maxLength حرف.",
163
+ },
164
+ words: {
165
+ en: ":input must be exactly :words words.",
166
+ ar: ":input يجب أن يكون بالضبط :words كلمة.",
167
+ },
168
+ minWords: {
169
+ en: ":input must be at least :minWords words.",
170
+ ar: ":input يجب أن يكون على الأقل :minWords كلمة.",
171
+ },
172
+ maxWords: {
173
+ en: ":input must be at most :maxWords words.",
174
+ ar: ":input يجب أن يكون على الأكثر :maxWords كلمة.",
175
+ },
176
+ email: {
177
+ en: "The :input must be a valid email address.",
178
+ ar: ":input يجب أن يكون بريد إلكتروني صالح.",
179
+ },
180
+ localized: {
181
+ en: ":input must be a an array of objects, each object has localeCode and text properties.",
182
+ ar: ":input يجب أن يكون مصفوفة من الكائنات، كل كائن يحتوي على خصائص localeCode و text.",
183
+ },
184
+ in: {
185
+ en: ":input accepts only the following values: :options.",
186
+ ar: ":input يقبل القيم التالية فقط: :options.",
187
+ },
188
+ allowedValues: {
189
+ en: ":input accepts only the following values: :values.",
190
+ ar: ":input يقبل القيم التالية فقط: :values.",
191
+ },
192
+ notAllowedValues: {
193
+ en: ":input must not be one of the following values: :values.",
194
+ ar: ":input يجب ألا يكون أحد القيم التالية: :values.",
195
+ },
196
+ string: {
197
+ en: ":input must be a string.",
198
+ ar: ":input يجب أن يكون سلسلة.",
199
+ },
200
+ number: {
201
+ en: ":input must be a number.",
202
+ ar: ":input يجب أن يكون رقم.",
203
+ },
204
+ integer: {
205
+ en: ":input must be an integer.",
206
+ ar: ":input يجب أن يكون عدد صحيح.",
207
+ },
208
+ float: {
209
+ en: ":input must be a float.",
210
+ ar: ":input يجب أن يكون عدد عائم.",
211
+ },
212
+ boolean: {
213
+ en: ":input must be a boolean.",
214
+ ar: ":input يجب أن يكون منطقي.",
215
+ },
216
+ pattern: {
217
+ en: ":input must match the following pattern: :pattern.",
218
+ ar: ":input يجب أن يتطابق مع النمط التالي: :pattern.",
219
+ },
220
+ array: {
221
+ en: ":input must be an array.",
222
+ ar: ":input يجب أن يكون مصفوفة.",
223
+ },
224
+ arrayOf: {
225
+ en: ":input must be an array of :type.",
226
+ ar: ":input يجب أن يكون مصفوفة من :type.",
227
+ },
228
+ tupleLengthMismatch: {
229
+ en: "The :input must have exactly :expected items, but got :actual.",
230
+ ar: ":input يجب أن يحتوي على :expected عناصر بالضبط، لكن تم استلام :actual.",
231
+ },
232
+ uniqueArray: {
233
+ en: ":input array must contain unique values.",
234
+ ar: ":input يجب أن يحتوي على قيم فريدة.",
235
+ },
236
+ sortedArray: {
237
+ en: ":input array must be sorted.",
238
+ ar: ":input يجب أن يكون مرتباً.",
239
+ },
240
+ url: {
241
+ en: ":input must be a valid URL.",
242
+ ar: ":input يجب أن يكون رابط صالح.",
243
+ },
244
+ length: {
245
+ en: ":input must be :length characters.",
246
+ ar: ":input يجب أن يكون :length حرف.",
247
+ },
248
+ scalar: {
249
+ en: ":input must be a string, number or boolean",
250
+ ar: ":input يجب أن يكون رقم أو نص أو قيمة منطقية",
251
+ },
252
+ stringify: {
253
+ en: ":input must be number, string",
254
+ ar: ":input يجب أن يكون رقم أو نص ",
255
+ },
256
+ unknownKeys: {
257
+ en: "The :input contains unknown keys: :unknownKeys",
258
+ ar: ":input يحتوي على حقول غير معروفة: :unknownKeys",
259
+ },
260
+ forbidden: {
261
+ en: "The :input can not be present.",
262
+ ar: ":input لا يمكن أن يكون موجود.",
263
+ },
264
+ forbiddenIf: {
265
+ en: "The :input is forbidden when :field equals :value.",
266
+ ar: "يُحظر إدخال :input عندما :field يساوي :value.",
267
+ },
268
+ forbiddenIfNot: {
269
+ en: "The :input is forbidden when :field does not equal :value.",
270
+ ar: "يُحظر إدخال :input عندما :field لا يساوي :value.",
271
+ },
272
+ forbiddenIfEmpty: {
273
+ en: "The :input is forbidden when :field is empty.",
274
+ ar: "يُحظر إدخال :input عندما :field فارغ.",
275
+ },
276
+ forbiddenIfNotEmpty: {
277
+ en: "The :input is forbidden when :field is not empty.",
278
+ ar: "يُحظر إدخال :input عندما :field غير فارغ.",
279
+ },
280
+ forbiddenIfIn: {
281
+ en: "The :input is forbidden when :field is one of the specified values.",
282
+ ar: "يُحظر إدخال :input عندما :field يكون أحد القيم المحددة.",
283
+ },
284
+ forbiddenIfNotIn: {
285
+ en: "The :input is forbidden when :field is not one of the specified values.",
286
+ ar: "يُحظر إدخال :input عندما :field ليس أحد القيم المحددة.",
287
+ },
288
+ enum: {
289
+ en: ":input must be one of the following values: :enum, given value :value.",
290
+ ar: ":input يجب أن يكون أحد القيم التالية: :enum, القيمة المعطاة :value.",
291
+ },
292
+ alpha: {
293
+ en: ":input must contain only alphabetic characters.",
294
+ ar: ":input يجب أن يحتوي على أحرف أبجدية فقط.",
295
+ },
296
+ alphaNumeric: {
297
+ en: ":input must contain only alphabetic and numeric characters.",
298
+ ar: ":input يجب أن يحتوي على أحرف أبجدية وأرقام فقط.",
299
+ },
300
+ numeric: {
301
+ en: ":input must contain only numeric characters.",
302
+ ar: ":input يجب أن يحتوي على أرقام فقط.",
303
+ },
304
+ withoutWhitespace: {
305
+ en: ":input must not contain whitespace.",
306
+ ar: ":input يجب ألا يحتوي على مسافات.",
307
+ },
308
+ startsWith: {
309
+ en: ":input must start with :prefix.",
310
+ ar: ":input يجب أن يبدأ بـ :prefix.",
311
+ },
312
+ endsWith: {
313
+ en: ":input must end with :suffix.",
314
+ ar: ":input يجب أن ينتهي بـ :suffix.",
315
+ },
316
+ contains: {
317
+ en: ":input must contain :substring.",
318
+ ar: ":input يجب أن يحتوي على :substring.",
319
+ },
320
+ notContains: {
321
+ en: ":input must not contain :substring.",
322
+ ar: ":input يجب ألا يحتوي على :substring.",
323
+ },
324
+ ip: {
325
+ en: ":input must be a valid IP address.",
326
+ ar: ":input يجب أن يكون عنوان IP صالح.",
327
+ },
328
+ ip4: {
329
+ en: ":input must be a valid IPv4 address.",
330
+ ar: ":input يجب أن يكون عنوان IPv4 صالح.",
331
+ },
332
+ ip6: {
333
+ en: ":input must be a valid IPv6 address.",
334
+ ar: ":input يجب أن يكون عنوان IPv6 صالح.",
335
+ },
336
+ creditCard: {
337
+ en: ":input must be a valid credit card number.",
338
+ ar: ":input يجب أن يكون رقم بطاقة ائتمان صالح.",
339
+ },
340
+ strongPassword: {
341
+ en: ":input must be a strong password (at least 8 characters, uppercase, lowercase, number, and special character).",
342
+ ar: ":input يجب أن يكون كلمة مرور قوية (8 أحرف على الأقل، أحرف كبيرة وصغيرة، رقم، ورمز خاص).",
343
+ },
344
+ color: {
345
+ en: ":input must be a valid color.",
346
+ ar: ":input يجب أن يكون لون صالح.",
347
+ },
348
+ hexColor: {
349
+ en: ":input must be a valid hex color.",
350
+ ar: ":input يجب أن يكون لون hex صالح.",
351
+ },
352
+ rgbColor: {
353
+ en: ":input must be a valid RGB color.",
354
+ ar: ":input يجب أن يكون لون RGB صالح.",
355
+ },
356
+ rgbaColor: {
357
+ en: ":input must be a valid RGBA color.",
358
+ ar: ":input يجب أن يكون لون RGBA صالح.",
359
+ },
360
+ hslColor: {
361
+ en: ":input must be a valid HSL color.",
362
+ ar: ":input يجب أن يكون لون HSL صالح.",
363
+ },
364
+ lightColor: {
365
+ en: ":input must be a light color.",
366
+ ar: ":input يجب أن يكون لون فاتح.",
367
+ },
368
+ darkColor: {
369
+ en: ":input must be a dark color.",
370
+ ar: ":input يجب أن يكون لون داكن.",
371
+ },
372
+ date: {
373
+ en: ":input must be a valid date.",
374
+ ar: ":input يجب أن يكون تاريخ صالح.",
375
+ },
376
+ minDate: {
377
+ en: ":input must be at least :dateOrField.",
378
+ ar: ":input يجب أن يكون على الأقل :dateOrField.",
379
+ },
380
+ maxDate: {
381
+ en: ":input must be at most :dateOrField.",
382
+ ar: ":input يجب أن يكون على الأكثر :dateOrField.",
383
+ },
384
+ beforeField: {
385
+ en: ":input must be before :dateOrField.",
386
+ ar: ":input يجب أن يكون قبل :dateOrField.",
387
+ },
388
+ afterField: {
389
+ en: ":input must be after :dateOrField.",
390
+ ar: ":input يجب أن يكون بعد :dateOrField.",
391
+ },
392
+ sameAsFieldDate: {
393
+ en: ":input must be the same as :field.",
394
+ ar: ":input يجب أن يكون نفس :field.",
395
+ },
396
+ betweenDates: {
397
+ en: ":input must be between :startDate and :endDate.",
398
+ ar: ":input يجب أن يكون بين :startDate و :endDate.",
399
+ },
400
+ today: {
401
+ en: ":input must be today.",
402
+ ar: ":input يجب أن يكون اليوم.",
403
+ },
404
+ fromToday: {
405
+ en: ":input must be today or in the future.",
406
+ ar: ":input يجب أن يكون اليوم أو في المستقبل.",
407
+ },
408
+ beforeToday: {
409
+ en: ":input must be before today.",
410
+ ar: ":input يجب أن يكون قبل اليوم.",
411
+ },
412
+ afterToday: {
413
+ en: ":input must be after today.",
414
+ ar: ":input يجب أن يكون بعد اليوم.",
415
+ },
416
+ future: {
417
+ en: ":input must be in the future",
418
+ ar: ":input يجب أن يكون في المستقبل",
419
+ },
420
+ past: {
421
+ en: ":input must be in the past",
422
+ ar: ":input يجب أن يكون في الماضي",
423
+ },
424
+ betweenYears: {
425
+ en: ":input must be between :startYear and :endYear.",
426
+ ar: ":input يجب أن يكون بين :startYear و :endYear.",
427
+ },
428
+ betweenMonths: {
429
+ en: ":input must be between month :startMonth and :endMonth.",
430
+ ar: ":input يجب أن يكون بين شهر :startMonth و :endMonth.",
431
+ },
432
+ betweenDays: {
433
+ en: ":input must be between day :startDay and :endDay.",
434
+ ar: ":input يجب أن يكون بين يوم :startDay و :endDay.",
435
+ },
436
+ minYear: {
437
+ en: ":input year must be at least :yearOrField.",
438
+ ar: "سنة :input يجب أن تكون على الأقل :yearOrField.",
439
+ },
440
+ maxYear: {
441
+ en: ":input year must be at most :yearOrField.",
442
+ ar: "سنة :input يجب أن تكون على الأكثر :yearOrField.",
443
+ },
444
+ minMonth: {
445
+ en: ":input month must be at least :monthOrField.",
446
+ ar: "شهر :input يجب أن يكون على الأقل :monthOrField.",
447
+ },
448
+ maxMonth: {
449
+ en: ":input month must be at most :monthOrField.",
450
+ ar: "شهر :input يجب أن يكون على الأكثر :monthOrField.",
451
+ },
452
+ minDay: {
453
+ en: ":input day must be at least :dayOrField.",
454
+ ar: "يوم :input يجب أن يكون على الأقل :dayOrField.",
455
+ },
456
+ maxDay: {
457
+ en: ":input day must be at most :dayOrField.",
458
+ ar: "يوم :input يجب أن يكون على الأكثر :dayOrField.",
459
+ },
460
+ month: {
461
+ en: ":input must be in month :month.",
462
+ ar: ":input يجب أن يكون في شهر :month.",
463
+ },
464
+ year: {
465
+ en: ":input must be in year :year.",
466
+ ar: ":input يجب أن يكون في سنة :year.",
467
+ },
468
+ quarter: {
469
+ en: ":input must be in quarter :quarter.",
470
+ ar: ":input يجب أن يكون في ربع :quarter.",
471
+ },
472
+ betweenTimes: {
473
+ en: ":input must be between :startTime and :endTime.",
474
+ ar: ":input يجب أن يكون بين :startTime و :endTime.",
475
+ },
476
+ fromHour: {
477
+ en: ":input must be from hour :hour onwards.",
478
+ ar: ":input يجب أن يكون من الساعة :hour فصاعداً.",
479
+ },
480
+ beforeHour: {
481
+ en: ":input must be before hour :hour.",
482
+ ar: ":input يجب أن يكون قبل الساعة :hour.",
483
+ },
484
+ betweenHours: {
485
+ en: ":input must be between hour :startHour and :endHour.",
486
+ ar: ":input يجب أن يكون بين الساعة :startHour و :endHour.",
487
+ },
488
+ fromMinute: {
489
+ en: ":input must be from minute :minute onwards.",
490
+ ar: ":input يجب أن يكون من الدقيقة :minute فصاعداً.",
491
+ },
492
+ beforeMinute: {
493
+ en: ":input must be before minute :minute.",
494
+ ar: ":input يجب أن يكون قبل الدقيقة :minute.",
495
+ },
496
+ betweenMinutes: {
497
+ en: ":input must be between minute :startMinute and :endMinute.",
498
+ ar: ":input يجب أن يكون بين الدقيقة :startMinute و :endMinute.",
499
+ },
500
+ age: {
501
+ en: ":input age must be exactly :years years.",
502
+ ar: "عمر :input يجب أن يكون بالضبط :years سنة.",
503
+ },
504
+ minAge: {
505
+ en: ":input age must be at least :years years.",
506
+ ar: "عمر :input يجب أن يكون على الأقل :years سنة.",
507
+ },
508
+ maxAge: {
509
+ en: ":input age must be at most :years years.",
510
+ ar: "عمر :input يجب أن يكون على الأكثر :years سنة.",
511
+ },
512
+ betweenAge: {
513
+ en: ":input age must be between :minAge and :maxAge years.",
514
+ ar: "عمر :input يجب أن يكون بين :minAge و :maxAge سنة.",
515
+ },
516
+ weekDay: {
517
+ en: ":input must be on :day.",
518
+ ar: ":input يجب أن يكون يوم :day.",
519
+ },
520
+ weekday: {
521
+ en: ":input must be a weekday.",
522
+ ar: ":input يجب أن يكون يوم عمل.",
523
+ },
524
+ weekdays: {
525
+ en: ":input must be one of the following weekdays: :days.",
526
+ ar: ":input يجب أن يكون أحد أيام الأسبوع التالية: :days.",
527
+ },
528
+ weekend: {
529
+ en: ":input must be a weekend.",
530
+ ar: ":input يجب أن يكون عطلة نهاية الأسبوع.",
531
+ },
532
+ businessDay: {
533
+ en: ":input must be a business day.",
534
+ ar: ":input يجب أن يكون يوم عمل.",
535
+ },
536
+ birthday: {
537
+ en: ":input must be a valid birthday.",
538
+ ar: ":input يجب أن يكون تاريخ ميلاد صالح.",
539
+ },
540
+ leapYear: {
541
+ en: ":input must be in a leap year.",
542
+ ar: ":input يجب أن يكون في سنة كبيسة.",
543
+ },
544
+ withinDays: {
545
+ en: ":input must be within :days days.",
546
+ ar: ":input يجب أن يكون خلال :days يوم.",
547
+ },
548
+ withinPastDays: {
549
+ en: ":input must be within the past :days days.",
550
+ ar: ":input يجب أن يكون خلال :days يوم الماضية.",
551
+ },
552
+ withinFutureDays: {
553
+ en: ":input must be within the next :days days.",
554
+ ar: ":input يجب أن يكون خلال :days يوم القادمة.",
555
+ },
556
+ requiredIf: {
557
+ en: ":input is required when :field is :value.",
558
+ ar: ":input مطلوب عندما يكون :field :value.",
559
+ },
560
+ requiredIfEmpty: {
561
+ en: ":input is required when :field is empty.",
562
+ ar: ":input مطلوب عندما يكون :field فارغ.",
563
+ },
564
+ requiredIfNotEmpty: {
565
+ en: ":input is required when :field is not empty.",
566
+ ar: ":input مطلوب عندما لا يكون :field فارغ.",
567
+ },
568
+ requiredIfIn: {
569
+ en: ":input is required when :field is one of :values.",
570
+ ar: ":input مطلوب عندما يكون :field أحد :values.",
571
+ },
572
+ requiredIfNotIn: {
573
+ en: ":input is required when :field is not one of :values.",
574
+ ar: ":input مطلوب عندما لا يكون :field أحد :values.",
575
+ },
576
+ requiredUnless: {
577
+ en: ":input is required unless :field is :value.",
578
+ ar: ":input مطلوب ما لم يكن :field :value.",
579
+ },
580
+ requiredWith: {
581
+ en: ":input is required when :field is present.",
582
+ ar: ":input مطلوب عندما يكون :field موجود.",
583
+ },
584
+ requiredWithAll: {
585
+ en: ":input is required when all of :fields are present.",
586
+ ar: ":input مطلوب عندما تكون جميع :fields موجودة.",
587
+ },
588
+ requiredWithAny: {
589
+ en: ":input is required when any of :fields are present.",
590
+ ar: ":input مطلوب عندما يكون أي من :fields موجود.",
591
+ },
592
+ requiredWithout: {
593
+ en: ":input is required when :field is not present.",
594
+ ar: ":input مطلوب عندما لا يكون :field موجود.",
595
+ },
596
+ requiredWithoutAll: {
597
+ en: ":input is required when none of :fields are present.",
598
+ ar: ":input مطلوب عندما لا تكون أي من :fields موجودة.",
599
+ },
600
+ requiredWithoutAny: {
601
+ en: ":input is required when any of :fields are not present.",
602
+ ar: ":input مطلوب عندما لا يكون أي من :fields موجود.",
603
+ },
604
+ presentIf: {
605
+ en: ":input must be present when :field is :value.",
606
+ ar: ":input يجب أن يكون موجود عندما يكون :field :value.",
607
+ },
608
+ presentIfEmpty: {
609
+ en: ":input must be present when :field is empty.",
610
+ ar: ":input يجب أن يكون موجود عندما يكون :field فارغ.",
611
+ },
612
+ presentIfNotEmpty: {
613
+ en: ":input must be present when :field is not empty.",
614
+ ar: ":input يجب أن يكون موجود عندما لا يكون :field فارغ.",
615
+ },
616
+ presentIfIn: {
617
+ en: ":input must be present when :field is one of :values.",
618
+ ar: ":input يجب أن يكون موجود عندما يكون :field أحد :values.",
619
+ },
620
+ presentIfNotIn: {
621
+ en: ":input must be present when :field is not one of :values.",
622
+ ar: ":input يجب أن يكون موجود عندما لا يكون :field أحد :values.",
623
+ },
624
+ presentUnless: {
625
+ en: ":input must be present unless :field is :value.",
626
+ ar: ":input يجب أن يكون موجود ما لم يكن :field :value.",
627
+ },
628
+ presentWith: {
629
+ en: ":input must be present when :field is present.",
630
+ ar: ":input يجب أن يكون موجود عندما يكون :field موجود.",
631
+ },
632
+ presentWithAll: {
633
+ en: ":input must be present when all of :fields are present.",
634
+ ar: ":input يجب أن يكون موجود عندما تكون جميع :fields موجودة.",
635
+ },
636
+ presentWithAny: {
637
+ en: ":input must be present when any of :fields are present.",
638
+ ar: ":input يجب أن يكون موجود عندما يكون أي من :fields موجود.",
639
+ },
640
+ presentWithout: {
641
+ en: ":input must be present when :field is not present.",
642
+ ar: ":input يجب أن يكون موجود عندما لا يكون :field موجود.",
643
+ },
644
+ presentWithoutAll: {
645
+ en: ":input must be present when none of :fields are present.",
646
+ ar: ":input يجب أن يكون موجود عندما لا تكون أي من :fields موجودة.",
647
+ },
648
+ presentWithoutAny: {
649
+ en: ":input must be present when any of :fields are not present.",
650
+ ar: ":input يجب أن يكون موجود عندما لا يكون أي من :fields موجود.",
651
+ },
652
+ accepted: {
653
+ en: ":input must be accepted.",
654
+ ar: ":input يجب أن يكون مقبول.",
655
+ },
656
+ acceptedIf: {
657
+ en: ":input must be accepted when :field is :value.",
658
+ ar: ":input يجب أن يكون مقبول عندما يكون :field :value.",
659
+ },
660
+ acceptedUnless: {
661
+ en: ":input must be accepted unless :field is :value.",
662
+ ar: ":input يجب أن يكون مقبول ما لم يكن :field :value.",
663
+ },
664
+ acceptedIfRequired: {
665
+ en: ":input must be accepted when :field is required.",
666
+ ar: ":input يجب أن يكون مقبول عندما يكون :field مطلوب.",
667
+ },
668
+ acceptedIfPresent: {
669
+ en: ":input must be accepted when :field is present.",
670
+ ar: ":input يجب أن يكون مقبول عندما يكون :field موجود.",
671
+ },
672
+ acceptedWithout: {
673
+ en: ":input must be accepted when :field is not present.",
674
+ ar: ":input يجب أن يكون مقبول عندما لا يكون :field موجود.",
675
+ },
676
+ declined: {
677
+ en: ":input must be declined.",
678
+ ar: ":input يجب أن يكون مرفوض.",
679
+ },
680
+ declinedIf: {
681
+ en: ":input must be declined when :field is :value.",
682
+ ar: ":input يجب أن يكون مرفوض عندما يكون :field :value.",
683
+ },
684
+ declinedUnless: {
685
+ en: ":input must be declined unless :field is :value.",
686
+ ar: ":input يجب أن يكون مرفوض ما لم يكن :field :value.",
687
+ },
688
+ declinedIfRequired: {
689
+ en: ":input must be declined when :field is required.",
690
+ ar: ":input يجب أن يكون مرفوض عندما يكون :field مطلوب.",
691
+ },
692
+ declinedIfPresent: {
693
+ en: ":input must be declined when :field is present.",
694
+ ar: ":input يجب أن يكون مرفوض عندما يكون :field موجود.",
695
+ },
696
+ declinedWithout: {
697
+ en: ":input must be declined when :field is not present.",
698
+ ar: ":input يجب أن يكون مرفوض عندما لا يكون :field موجود.",
699
+ },
700
+ });
701
+
702
+ // Attributes translations
703
+ groupedTranslations("attributes", {
704
+ email: {
705
+ en: "Email",
706
+ ar: "البريد الإلكتروني",
707
+ },
708
+ phoneNumber: {
709
+ en: "Phone Number",
710
+ ar: "رقم الهاتف",
711
+ },
712
+ firstName: {
713
+ en: "First Name",
714
+ ar: "الاسم الأول",
715
+ },
716
+ lastName: {
717
+ en: "Last Name",
718
+ ar: "الاسم الأخير",
719
+ },
720
+ password: {
721
+ en: "Password",
722
+ ar: "كلمة المرور",
723
+ },
724
+ name: {
725
+ en: "Name",
726
+ ar: "الاسم",
727
+ },
728
+ });