//! moment.js locale configuration
//! locale : Arabic (Algeria) [ar-dz]
-//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
+//! author : Amine Roukh: https://github.com/Amine27
+//! author : Abdel Said: https://github.com/abdelsaid
+//! author : Ahmed Elkhatib
+//! author : forabi https://github.com/forabi
+//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
import moment from '../moment';
+var pluralForm = function (n) {
+ return n === 0
+ ? 0
+ : n === 1
+ ? 1
+ : n === 2
+ ? 2
+ : n % 100 >= 3 && n % 100 <= 10
+ ? 3
+ : n % 100 >= 11
+ ? 4
+ : 5;
+ },
+ plurals = {
+ s: [
+ 'أقل من ثانية',
+ 'ثانية واحدة',
+ ['ثانيتان', 'ثانيتين'],
+ '%d ثوان',
+ '%d ثانية',
+ '%d ثانية',
+ ],
+ m: [
+ 'أقل من دقيقة',
+ 'دقيقة واحدة',
+ ['دقيقتان', 'دقيقتين'],
+ '%d دقائق',
+ '%d دقيقة',
+ '%d دقيقة',
+ ],
+ h: [
+ 'أقل من ساعة',
+ 'ساعة واحدة',
+ ['ساعتان', 'ساعتين'],
+ '%d ساعات',
+ '%d ساعة',
+ '%d ساعة',
+ ],
+ d: [
+ 'أقل من يوم',
+ 'يوم واحد',
+ ['يومان', 'يومين'],
+ '%d أيام',
+ '%d يومًا',
+ '%d يوم',
+ ],
+ M: [
+ 'أقل من شهر',
+ 'شهر واحد',
+ ['شهران', 'شهرين'],
+ '%d أشهر',
+ '%d شهرا',
+ '%d شهر',
+ ],
+ y: [
+ 'أقل من عام',
+ 'عام واحد',
+ ['عامان', 'عامين'],
+ '%d أعوام',
+ '%d عامًا',
+ '%d عام',
+ ],
+ },
+ pluralize = function (u) {
+ return function (number, withoutSuffix, string, isFuture) {
+ var f = pluralForm(number),
+ str = plurals[u][pluralForm(number)];
+ if (f === 2) {
+ str = str[withoutSuffix ? 0 : 1];
+ }
+ return str.replace(/%d/i, number);
+ };
+ },
+ months = [
+ 'جانفي',
+ 'فيفري',
+ 'مارس',
+ 'أفريل',
+ 'ماي',
+ 'جوان',
+ 'جويلية',
+ 'أوت',
+ 'سبتمبر',
+ 'أكتوبر',
+ 'نوفمبر',
+ 'ديسمبر',
+ ];
+
export default moment.defineLocale('ar-dz', {
- months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
- '_'
- ),
- monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
- '_'
- ),
+ months: months,
+ monthsShort: months,
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
- weekdaysShort: 'Ø§ØØ¯_اثÙ\86Ù\8aÙ\86_Ø«Ù\84اثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
- weekdaysMin: 'Ø£Ø_إث_Ø«Ù\84ا_أر_Ø®Ù\85_جÙ\85_سب'.split('_'),
+ weekdaysShort: 'Ø£ØØ¯_إثÙ\86Ù\8aÙ\86_Ø«Ù\84اثاء_Ø£ربعاء_خميس_جمعة_سبت'.split('_'),
+ weekdaysMin: 'Ø_Ù\86_Ø«_ر_Ø®_ج_س'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
- L: 'DD/MM/YYYY',
+ L: 'D/\u200FM/\u200FYYYY',
LL: 'D MMMM YYYY',
LLL: 'D MMMM YYYY HH:mm',
LLLL: 'dddd D MMMM YYYY HH:mm',
},
+ meridiemParse: /ص|م/,
+ isPM: function (input) {
+ return 'م' === input;
+ },
+ meridiem: function (hour, minute, isLower) {
+ if (hour < 12) {
+ return 'ص';
+ } else {
+ return 'م';
+ }
+ },
calendar: {
- sameDay: '[اÙ\84Ù\8aÙ\88Ù\85 عÙ\84Ù\89 الساعة] LT',
- nextDay: '[غدا على الساعة] LT',
- nextWeek: 'dddd [عÙ\84Ù\89 الساعة] LT',
- lastDay: '[Ø£Ù\85س عÙ\84Ù\89 الساعة] LT',
- lastWeek: 'dddd [عÙ\84Ù\89 الساعة] LT',
+ sameDay: '[اÙ\84Ù\8aÙ\88Ù\85 عÙ\86د الساعة] LT',
+ nextDay: '[غدًا عند الساعة] LT',
+ nextWeek: 'dddd [عÙ\86د الساعة] LT',
+ lastDay: '[Ø£Ù\85س عÙ\86د الساعة] LT',
+ lastWeek: 'dddd [عÙ\86د الساعة] LT',
sameElse: 'L',
},
relativeTime: {
- future: 'في %s',
+ future: 'بعد %s',
past: 'منذ %s',
- s: 'ثوان',
- ss: '%d ثانية',
- m: 'دقيقة',
- mm: '%d دقائق',
- h: 'ساعة',
- hh: '%d ساعات',
- d: 'يوم',
- dd: '%d أيام',
- M: 'شهر',
- MM: '%d أشهر',
- y: 'سنة',
- yy: '%d سنوات',
+ s: pluralize('s'),
+ ss: pluralize('s'),
+ m: pluralize('m'),
+ mm: pluralize('m'),
+ h: pluralize('h'),
+ hh: pluralize('h'),
+ d: pluralize('d'),
+ dd: pluralize('d'),
+ M: pluralize('M'),
+ MM: pluralize('M'),
+ y: pluralize('y'),
+ yy: pluralize('y'),
+ },
+ postformat: function (string) {
+ return string.replace(/,/g, '،');
},
week: {
dow: 0, // Sunday is the first day of the week.
assert.equal(
moment(input, mmm).month(),
i,
- input + ' should be month ' + (i + 1)
+ input +
+ ' should be month ' +
+ (i + 1) +
+ ' instead is month ' +
+ moment(input, mmm).month()
);
}
var a = [
[
'dddd, MMMM Do YYYY, h:mm:ss a',
- 'الأحد, فيفري 14 2010, 3:25:50 pm',
+ 'الأحد، فيفري 14 2010، 3:25:50 م',
],
- ['ddd, hA', 'Ø§ØØ¯, 3PM'],
+ ['ddd, hA', 'Ø£ØØ¯Ø\8c 3Ù\85'],
['M Mo MM MMMM MMM', '2 2 02 فيفري فيفري'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
- ['d do dddd ddd dd', '0 0 اÙ\84Ø£ØØ¯ Ø§ØØ¯ Ø£ح'],
+ ['d do dddd ddd dd', '0 0 اÙ\84Ø£ØØ¯ Ø£ØØ¯ ح'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '7 7 07'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
- ['a A', 'pm PM'],
+ ['a A', 'م م'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['LT', '15:25'],
['LTS', '15:25:50'],
- ['L', '14/02/2010'],
+ ['L', '14/\u200f2/\u200f2010'],
['LL', '14 فيفري 2010'],
['LLL', '14 فيفري 2010 15:25'],
['LLLL', 'الأحد 14 فيفري 2010 15:25'],
- ['l', '14/2/2010'],
+ ['l', '14/\u200f2/\u200f2010'],
['ll', '14 فيفري 2010'],
['lll', '14 فيفري 2010 15:25'],
- ['llll', 'احد 14 فيفري 2010 15:25'],
+ ['llll', 'Ø£حد 14 فيفري 2010 15:25'],
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
});
test('format week', function (assert) {
- var expected = 'اÙ\84Ø£ØØ¯ Ø§ØØ¯ Ø£Ø_اÙ\84إثÙ\86Ù\8aÙ\86 اثÙ\86Ù\8aÙ\86 إث_اÙ\84Ø«Ù\84اثاء Ø«Ù\84اثاء Ø«Ù\84ا_اÙ\84أربعاء اربعاء أر_اÙ\84Ø®Ù\85Ù\8aس Ø®Ù\85Ù\8aس Ø®Ù\85_اÙ\84جÙ\85عة جÙ\85عة جÙ\85_اÙ\84سبت سبت سب'.split(
+ var expected = 'اÙ\84Ø£ØØ¯ Ø£ØØ¯ Ø_اÙ\84إثÙ\86Ù\8aÙ\86 إثÙ\86Ù\8aÙ\86 Ù\86_اÙ\84Ø«Ù\84اثاء Ø«Ù\84اثاء Ø«_اÙ\84أربعاء أربعاء ر_اÙ\84Ø®Ù\85Ù\8aس Ø®Ù\85Ù\8aس Ø®_اÙ\84جÙ\85عة جÙ\85عة ج_اÙ\84سبت سبت س'.split(
'_'
),
i;
var start = moment([2007, 1, 28]);
assert.equal(
start.from(moment([2007, 1, 28]).add({ s: 44 }), true),
- 'ثوان',
+ '44 ثانية',
'44 seconds = a few seconds'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ s: 45 }), true),
- 'دقيقة',
+ 'دقيقة واحدة',
'45 seconds = a minute'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ s: 89 }), true),
- 'دقيقة',
+ 'دقيقة واحدة',
'89 seconds = a minute'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ s: 90 }), true),
- '2 دقائق',
+ 'دقيقتان',
'90 seconds = 2 minutes'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ m: 44 }), true),
- '44 دقائق',
+ '44 دقيقة',
'44 minutes = 44 minutes'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ m: 45 }), true),
- 'ساعة',
+ 'ساعة واحدة',
'45 minutes = an hour'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ m: 89 }), true),
- 'ساعة',
+ 'ساعة واحدة',
'89 minutes = an hour'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ m: 90 }), true),
- '2 ساعات',
+ 'ساعتان',
'90 minutes = 2 hours'
);
assert.equal(
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ h: 21 }), true),
- '21 ساعات',
+ '21 ساعة',
'21 hours = 21 hours'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ h: 22 }), true),
- 'يوم',
+ 'يوم واحد',
'22 hours = a day'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ h: 35 }), true),
- 'يوم',
+ 'يوم واحد',
'35 hours = a day'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ h: 36 }), true),
- '2 أيام',
+ 'يومان',
'36 hours = 2 days'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 1 }), true),
- 'يوم',
+ 'يوم واحد',
'1 day = a day'
);
assert.equal(
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 25 }), true),
- '25 أيام',
+ '25 يومًا',
'25 days = 25 days'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 26 }), true),
- 'شهر',
+ 'شهر واحد',
'26 days = a month'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 30 }), true),
- 'شهر',
+ 'شهر واحد',
'30 days = a month'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 43 }), true),
- 'شهر',
+ 'شهر واحد',
'43 days = a month'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 46 }), true),
- '2 أشهر',
+ 'شهران',
'46 days = 2 months'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 74 }), true),
- '2 أشهر',
+ 'شهران',
'75 days = 2 months'
);
assert.equal(
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ M: 1 }), true),
- 'شهر',
+ 'شهر واحد',
'1 month = a month'
);
assert.equal(
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 345 }), true),
- 'سÙ\86Ø©',
+ 'عاÙ\85 Ù\88Ø§ØØ¯',
'345 days = a year'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ d: 548 }), true),
- '2 سنوات',
+ 'عامان',
'548 days = 2 years'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ y: 1 }), true),
- 'سÙ\86Ø©',
+ 'عاÙ\85 Ù\88Ø§ØØ¯',
'1 year = a year'
);
assert.equal(
start.from(moment([2007, 1, 28]).add({ y: 5 }), true),
- '5 سÙ\86Ù\88ات',
+ '5 أعÙ\88اÙ\85',
'5 years = 5 years'
);
});
test('suffix', function (assert) {
- assert.equal(moment(30000).from(0), 'في ثوان', 'prefix');
- assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix');
+ assert.equal(moment(30000).from(0), 'بعد 30 ثانية', 'prefix');
+ assert.equal(moment(0).from(30000), 'منذ 30 ثانية', 'suffix');
});
test('now from now', function (assert) {
assert.equal(
moment().fromNow(),
- 'منذ ثوان',
+ 'منذ ثانية واحدة',
'now from now should display as in the past'
);
});
test('fromNow', function (assert) {
assert.equal(
moment().add({ s: 30 }).fromNow(),
- 'في ثوان',
+ 'بعد 30 ثانية',
'in a few seconds'
);
- assert.equal(moment().add({ d: 5 }).fromNow(), 'في 5 أيام', 'in 5 days');
+ assert.equal(moment().add({ d: 5 }).fromNow(), 'بعد 5 أيام', 'in 5 days');
});
test('calendar day', function (assert) {
assert.equal(
moment(a).calendar(),
- 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\84Ù\89 الساعة 12:00',
+ 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\86د الساعة 12:00',
'today at the same time'
);
assert.equal(
moment(a).add({ m: 25 }).calendar(),
- 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\84Ù\89 الساعة 12:25',
+ 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\86د الساعة 12:25',
'Now plus 25 min'
);
assert.equal(
moment(a).add({ h: 1 }).calendar(),
- 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\84Ù\89 الساعة 13:00',
+ 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\86د الساعة 13:00',
'Now plus 1 hour'
);
assert.equal(
moment(a).add({ d: 1 }).calendar(),
- 'غدا على الساعة 12:00',
+ 'غدًا عند الساعة 12:00',
'tomorrow at the same time'
);
assert.equal(
moment(a).subtract({ h: 1 }).calendar(),
- 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\84Ù\89 الساعة 11:00',
+ 'اÙ\84Ù\8aÙ\88Ù\85 عÙ\86د الساعة 11:00',
'Now minus 1 hour'
);
assert.equal(
moment(a).subtract({ d: 1 }).calendar(),
- 'Ø£Ù\85س عÙ\84Ù\89 الساعة 12:00',
+ 'Ø£Ù\85س عÙ\86د الساعة 12:00',
'yesterday at the same time'
);
});
m = moment().add({ d: i });
assert.equal(
m.calendar(),
- m.format('dddd [عÙ\84Ù\89 الساعة] LT'),
+ m.format('dddd [عÙ\86د الساعة] LT'),
'Today + ' + i + ' days current time'
);
m.hours(0).minutes(0).seconds(0).milliseconds(0);
assert.equal(
m.calendar(),
- m.format('dddd [عÙ\84Ù\89 الساعة] LT'),
+ m.format('dddd [عÙ\86د الساعة] LT'),
'Today + ' + i + ' days beginning of day'
);
m.hours(23).minutes(59).seconds(59).milliseconds(999);
assert.equal(
m.calendar(),
- m.format('dddd [عÙ\84Ù\89 الساعة] LT'),
+ m.format('dddd [عÙ\86د الساعة] LT'),
'Today + ' + i + ' days end of day'
);
}
m = moment().subtract({ d: i });
assert.equal(
m.calendar(),
- m.format('dddd [عÙ\84Ù\89 الساعة] LT'),
+ m.format('dddd [عÙ\86د الساعة] LT'),
'Today - ' + i + ' days current time'
);
m.hours(0).minutes(0).seconds(0).milliseconds(0);
assert.equal(
m.calendar(),
- m.format('dddd [عÙ\84Ù\89 الساعة] LT'),
+ m.format('dddd [عÙ\86د الساعة] LT'),
'Today - ' + i + ' days beginning of day'
);
m.hours(23).minutes(59).seconds(59).milliseconds(999);
assert.equal(
m.calendar(),
- m.format('dddd [عÙ\84Ù\89 الساعة] LT'),
+ m.format('dddd [عÙ\86د الساعة] LT'),
'Today - ' + i + ' days end of day'
);
}
test('weeks year starting sunday formatted', function (assert) {
assert.equal(
- moment([2016, 1, 4]).format('w ww wo'),
+ moment([2011, 1, 4]).format('w ww wo'),
'5 05 5',
- 'Feb 4 2016 should be week 5'
+ 'Feb 4 2011 should be week 5'
);
assert.equal(
- moment([2016, 0, 6]).format('w ww wo'),
+ moment([2012, 0, 6]).format('w ww wo'),
'1 01 1',
- 'Jan 6 2016 should be week 1'
+ 'Jan 6 2012 should be week 1'
);
assert.equal(
- moment([2016, 0, 7]).format('w ww wo'),
+ moment([2012, 0, 7]).format('w ww wo'),
'1 01 1',
- 'Jan 7 2016 should be week 1'
+ 'Jan 7 2012 should be week 1'
);
assert.equal(
- moment([2016, 0, 13]).format('w ww wo'),
+ moment([2012, 0, 13]).format('w ww wo'),
'2 02 2',
- 'Jan 13 2016 should be week 2'
+ 'Jan 13 2012 should be week 2'
);
assert.equal(
- moment([2016, 0, 14]).format('w ww wo'),
+ moment([2012, 0, 14]).format('w ww wo'),
'2 02 2',
- 'Jan 14 2016 should be week 2'
+ 'Jan 14 2012 should be week 2'
+ );
+});
+
+test('no leading zeros in long date formats', function (assert) {
+ var i, j, longDateStr, shortDateStr;
+ for (i = 1; i <= 9; ++i) {
+ for (j = 1; j <= 9; ++j) {
+ longDateStr = moment([2014, i, j]).format('L');
+ shortDateStr = moment([2014, i, j]).format('l');
+ assert.equal(
+ longDateStr,
+ shortDateStr,
+ 'should not have leading zeros in month or day'
+ );
+ }
+ }
+});
+
+// locale-specific
+test('ar-dz strict mode parsing works', function (assert) {
+ var m, formattedDate;
+ m = moment().locale('ar-dz');
+ formattedDate = m.format('l');
+ assert.equal(
+ moment.utc(formattedDate, 'l', 'ar-dz', false).isValid(),
+ true,
+ 'Non-strict parsing works'
+ );
+ assert.equal(
+ moment.utc(formattedDate, 'l', 'ar-dz', true).isValid(),
+ true,
+ 'Strict parsing must work'
);
});