diff --git a/src/locale/ku.js b/src/locale/ku.js index 07a6b2f16..1d7a449d8 100644 --- a/src/locale/ku.js +++ b/src/locale/ku.js @@ -1,14 +1,65 @@ // Kurdish [ku] import dayjs from 'dayjs' +export const englishToArabicNumbersMap = { + 1: '١', + 2: '٢', + 3: '٣', + 4: '٤', + 5: '٥', + 6: '٦', + 7: '٧', + 8: '٨', + 9: '٩', + 0: '٠' +} + +const arabicToEnglishNumbersMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +} + +const months = [ + 'کانوونی دووەم', + 'شوبات', + 'ئادار', + 'نیسان', + 'ئایار', + 'حوزەیران', + 'تەممووز', + 'ئاب', + 'ئەیلوول', + 'تشرینی یەکەم', + 'تشرینی دووەم', + 'کانوونی یەکەم' +] + const locale = { name: 'ku', - weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'), - months: 'کانونی دووەم_شوبات_ئازار_نیسان_ئایار_حوزەیران_تەمموز_ئاب_ئەیلوول_تشرینی یەكەم_تشرینی دووەم_كانونی یەکەم'.split('_'), + months, + monthsShort: months, + weekdays: 'یەکشەممە_دووشەممە_سێشەممە_چوارشەممە_پێنجشەممە_هەینی_شەممە'.split('_'), + weekdaysShort: 'یەکشەم_دووشەم_سێشەم_چوارشەم_پێنجشەم_هەینی_شەممە'.split('_'), weekStart: 6, - weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'), - monthsShort: 'کانونی دووەم_شوبات_ئازار_نیسان_ئایار_حوزەیران_تەمموز_ئاب_ئەیلوول_تشرینی یەكەم_تشرینی دووەم_كانونی یەکەم'.split('_'), - weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'), + weekdaysMin: 'ی_د_س_چ_پ_هـ_ش'.split('_'), + preparse(string) { + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, match => arabicToEnglishNumbersMap[match]) + .replace(/،/g, ',') + }, + postformat(string) { + return string + .replace(/\d/g, match => englishToArabicNumbersMap[match]) + .replace(/,/g, '،') + }, ordinal: n => n, formats: { LT: 'HH:mm', @@ -20,18 +71,18 @@ const locale = { }, meridiem: hour => (hour < 12 ? 'پ.ن' : 'د.ن'), relativeTime: { - future: 'له‌ %s', + future: 'لە %s', past: '%s', - s: 'چه‌ند چركه‌یه‌ك', - m: 'یه‌ك خوله‌ك', - mm: '%d خوله‌ك', - h: 'یه‌ك كاتژمێر', - hh: '%d كاتژمێر', - d: 'یه‌ك ڕۆژ', + s: 'چەند چرکەیەک', + m: 'یەک خولەک', + mm: '%d خولەک', + h: 'یەک کاتژمێر', + hh: '%d کاتژمێر', + d: 'یەک ڕۆژ', dd: '%d ڕۆژ', - M: 'یه‌ك مانگ', + M: 'یەک مانگ', MM: '%d مانگ', - y: 'یه‌ك ساڵ', + y: 'یەک ساڵ', yy: '%d ساڵ' } } @@ -39,4 +90,3 @@ const locale = { dayjs.locale(locale, null, true) export default locale - diff --git a/test/locale/ku.test.js b/test/locale/ku.test.js index d3dec4c28..7ceb5424d 100644 --- a/test/locale/ku.test.js +++ b/test/locale/ku.test.js @@ -1,6 +1,10 @@ +import moment from 'moment' import MockDate from 'mockdate' import dayjs from '../../src' -import '../../src/locale/ku' +import locale, { englishToArabicNumbersMap } from '../../src/locale/ku' +import preParsePostFormat from '../../src/plugin/preParsePostFormat' + +dayjs.extend(preParsePostFormat) beforeEach(() => { MockDate.set(new Date()) @@ -15,6 +19,20 @@ it('Format meridiem correctly', () => { const dayjsKu = dayjs() .startOf('day') .add(i, 'hour') - expect(dayjsKu.locale('ku').format('h A')).toBe(`${i % 12 || 12} ${i < 12 ? 'پ.ن' : 'د.ن'}`) + const hour = (i % 12 || 12) + .toString() + .replace(/\d/g, match => englishToArabicNumbersMap[match]) + const m = i < 12 ? 'پ.ن' : 'د.ن' + expect(dayjsKu.locale('ku').format('h A')).toBe(`${hour} ${m}`) + } +}) + +it('Preparse with locale function', () => { + for (let i = 0; i <= 7; i += 1) { + dayjs.locale(locale) + const momentKu = moment() + .locale('ku') + .add(i, 'day') + expect(dayjs(momentKu.format()).format()).toEqual(momentKu.format()) } })