From c9fc8e2841a064ec8d583f9b10f71e751f227ba8 Mon Sep 17 00:00:00 2001 From: aryankarim Date: Mon, 25 Apr 2022 16:46:56 +0300 Subject: [PATCH 1/6] feat(Locales): add Kurdish Locale --- src/lang/ku.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/lang/ku.ts diff --git a/src/lang/ku.ts b/src/lang/ku.ts new file mode 100644 index 0000000..cdce7e7 --- /dev/null +++ b/src/lang/ku.ts @@ -0,0 +1,20 @@ +const kurdishDigits = ['٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩']; + +// change digits from English to Kurdish +function toKurdishNumeric(number: number): string { + return number.toString().replace(/\d/g, (x: string) => kurdishDigits[x]); +} + +const kurdishFuzzyDates = [ + ['%s چرکە لەمەوپێش'], // Seconds + ['%s دەقە لەمەوپێش'], // Minutes + ['%s کاتژمێر لەمەوپێش'], // Hours + ['%s ڕۆژ لەمەوپێش'], // Days + ['%s هەفتە لەمەوپێش'], // Weeks + ['%s مانگ لەمەوپێش'], // Months + ['%s ساڵ لەمەوپێش'], // Years +]; + +export default function(number: number, index: number): [string] { + return [kurdishFuzzyDates[Math.floor(index / 2)][0].replace('%s', toKurdishNumeric(number))]; +} From 0f323f1d18576e35fca7c81f1236525a899b2e2a Mon Sep 17 00:00:00 2001 From: aryankarim Date: Tue, 26 Apr 2022 09:19:38 +0300 Subject: [PATCH 2/6] (ku.ts): add "just now" when index is zero --- src/lang/ku.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lang/ku.ts b/src/lang/ku.ts index cdce7e7..ae70e96 100644 --- a/src/lang/ku.ts +++ b/src/lang/ku.ts @@ -16,5 +16,6 @@ const kurdishFuzzyDates = [ ]; export default function(number: number, index: number): [string] { + if (index === 0) return ['هەر ئێستا']; return [kurdishFuzzyDates[Math.floor(index / 2)][0].replace('%s', toKurdishNumeric(number))]; } From 83cc136ff5c45b9df087f9c0898798a9f2a0ae3e Mon Sep 17 00:00:00 2001 From: aryanmajeed Date: Sat, 30 Apr 2022 00:36:03 +0300 Subject: [PATCH 3/6] test(ku.spec.ts): add unit test for kurdish locale --- src/lang/ku.ts | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/lang/ku.ts b/src/lang/ku.ts index ae70e96..7d0a6eb 100644 --- a/src/lang/ku.ts +++ b/src/lang/ku.ts @@ -6,16 +6,19 @@ function toKurdishNumeric(number: number): string { } const kurdishFuzzyDates = [ - ['%s چرکە لەمەوپێش'], // Seconds - ['%s دەقە لەمەوپێش'], // Minutes - ['%s کاتژمێر لەمەوپێش'], // Hours - ['%s ڕۆژ لەمەوپێش'], // Days - ['%s هەفتە لەمەوپێش'], // Weeks - ['%s مانگ لەمەوپێش'], // Months - ['%s ساڵ لەمەوپێش'], // Years + ['%s چرکە لەمەوپێش', '%s چرکەی داهاتوو'], // Seconds + ['%s دەقە لەمەوپێش', '%s دەقەی داهاتوو'], // Minutes + ['%s کاتژمێر لەمەوپێش', '%s کاتژمێری داهاتوو'], // Hours + ['%s ڕۆژ لەمەوپێش', '%s ڕۆژی داهاتوو'], // Days + ['%s هەفتە لەمەوپێش', '%s هەفتەی داهاتوو'], // Weeks + ['%s مانگ لەمەوپێش', '%s مانگی داهاتوو'], // Months + ['%s ساڵ لەمەوپێش', '%s ساڵی داهاتوو'], // Years ]; -export default function(number: number, index: number): [string] { - if (index === 0) return ['هەر ئێستا']; - return [kurdishFuzzyDates[Math.floor(index / 2)][0].replace('%s', toKurdishNumeric(number))]; +export default function(number: number, index: number): [string, string] { + if (index === 0) return ['هەر ئێستا', 'ئێستا']; + return [ + kurdishFuzzyDates[Math.floor(index / 2)][0].replace('%s', toKurdishNumeric(number)), + kurdishFuzzyDates[Math.floor(index / 2)][1].replace('%s', toKurdishNumeric(number)), + ]; } From d0f2eda3c1afef180724ab6f6ed612e13d8227ec Mon Sep 17 00:00:00 2001 From: aryanmajeed Date: Sat, 30 Apr 2022 01:15:14 +0300 Subject: [PATCH 4/6] fix(ku.spec.ts & ku.ts): fix future tense --- src/lang/ku.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lang/ku.ts b/src/lang/ku.ts index 7d0a6eb..1e28a28 100644 --- a/src/lang/ku.ts +++ b/src/lang/ku.ts @@ -6,13 +6,13 @@ function toKurdishNumeric(number: number): string { } const kurdishFuzzyDates = [ - ['%s چرکە لەمەوپێش', '%s چرکەی داهاتوو'], // Seconds - ['%s دەقە لەمەوپێش', '%s دەقەی داهاتوو'], // Minutes - ['%s کاتژمێر لەمەوپێش', '%s کاتژمێری داهاتوو'], // Hours - ['%s ڕۆژ لەمەوپێش', '%s ڕۆژی داهاتوو'], // Days - ['%s هەفتە لەمەوپێش', '%s هەفتەی داهاتوو'], // Weeks - ['%s مانگ لەمەوپێش', '%s مانگی داهاتوو'], // Months - ['%s ساڵ لەمەوپێش', '%s ساڵی داهاتوو'], // Years + ['%s چرکە لەمەوپێش', '%s چرکەیتر'], // Seconds + ['%s دەقە لەمەوپێش', '%s دەقەیتر'], // Minutes + ['%s کاتژمێر لەمەوپێش', '%s کاتژمێریتر'], // Hours + ['%s ڕۆژ لەمەوپێش', '%s ڕۆژیتر'], // Days + ['%s هەفتە لەمەوپێش', '%s هەفتەیتر'], // Weeks + ['%s مانگ لەمەوپێش', '%s مانگیتر'], // Months + ['%s ساڵ لەمەوپێش', '%s ساڵیتر'], // Years ]; export default function(number: number, index: number): [string, string] { From 3a9dbb590f1c03b240d2b938a4b595518888e641 Mon Sep 17 00:00:00 2001 From: aryanmajeed Date: Sat, 30 Apr 2022 01:17:59 +0300 Subject: [PATCH 5/6] test(ku.spec.ts): include kurdish test file --- __tests__/lang/ku.spec.ts | 103 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 __tests__/lang/ku.spec.ts diff --git a/__tests__/lang/ku.spec.ts b/__tests__/lang/ku.spec.ts new file mode 100644 index 0000000..9913553 --- /dev/null +++ b/__tests__/lang/ku.spec.ts @@ -0,0 +1,103 @@ +import { advanceTo, clear } from 'jest-date-mock'; +import { register, format } from '../../src'; +import ku from '../../src/lang/ku'; + +register('ku', ku); + +let date = new Date(); + +beforeEach(() => { + advanceTo(0); + date = new Date(); +}); +afterEach(() => { + clear(); +}); +describe('test kurdish dates', () => { + test('time ago', () => { + advanceTo(9 * 1000); + expect(format(date, 'ku')).toEqual('هەر ئێستا'); + + advanceTo(30 * 1000); + expect(format(date, 'ku')).toEqual('٣٠ چرکە لەمەوپێش'); + + advanceTo(1000 * 60); + expect(format(date, 'ku')).toEqual('١ دەقە لەمەوپێش'); + + advanceTo(1000 * 60 * 30); + expect(format(date, 'ku')).toEqual('٣٠ دەقە لەمەوپێش'); + + advanceTo(1000 * 60 * 60); + expect(format(date, 'ku')).toEqual('١ کاتژمێر لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 6); + expect(format(date, 'ku')).toEqual('٦ کاتژمێر لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24); + expect(format(date, 'ku')).toEqual('١ ڕۆژ لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24 * 3); + expect(format(date, 'ku')).toEqual('٣ ڕۆژ لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24 * 7); + expect(format(date, 'ku')).toEqual('١ هەفتە لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24 * 7 * 3); + expect(format(date, 'ku')).toEqual('٣ هەفتە لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24 * 31); + expect(format(date, 'ku')).toEqual('١ مانگ لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24 * 31 * 4); + expect(format(date, 'ku')).toEqual('٤ مانگ لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24 * 366); + expect(format(date, 'ku')).toEqual('١ ساڵ لەمەوپێش'); + + advanceTo(1000 * 60 * 60 * 24 * 366 * 11); + expect(format(date, 'ku')).toEqual('١١ ساڵ لەمەوپێش'); + }); + test('time in', () => { + advanceTo(-9 * 1000); + expect(format(date, 'ku')).toEqual('ئێستا'); + + advanceTo(-30 * 1000); + expect(format(date, 'ku')).toEqual('٣٠ چرکەیتر'); + + advanceTo(-1000 * 60); + expect(format(date, 'ku')).toEqual('١ دەقەیتر'); + + advanceTo(-1000 * 60 * 30); + expect(format(date, 'ku')).toEqual('٣٠ دەقەیتر'); + + advanceTo(-1000 * 60 * 60); + expect(format(date, 'ku')).toEqual('١ کاتژمێریتر'); + + advanceTo(-1000 * 60 * 60 * 6); + expect(format(date, 'ku')).toEqual('٦ کاتژمێریتر'); + + advanceTo(-1000 * 60 * 60 * 24); + expect(format(date, 'ku')).toEqual('١ ڕۆژیتر'); + + advanceTo(-1000 * 60 * 60 * 24 * 3); + expect(format(date, 'ku')).toEqual('٣ ڕۆژیتر'); + + advanceTo(-1000 * 60 * 60 * 24 * 7); + expect(format(date, 'ku')).toEqual('١ هەفتەیتر'); + + advanceTo(-1000 * 60 * 60 * 24 * 7 * 3); + expect(format(date, 'ku')).toEqual('٣ هەفتەیتر'); + + advanceTo(-1000 * 60 * 60 * 24 * 31); + expect(format(date, 'ku')).toEqual('١ مانگیتر'); + + advanceTo(-1000 * 60 * 60 * 24 * 31 * 4); + expect(format(date, 'ku')).toEqual('٤ مانگیتر'); + + advanceTo(-1000 * 60 * 60 * 24 * 366); + expect(format(date, 'ku')).toEqual('١ ساڵیتر'); + + advanceTo(-1000 * 60 * 60 * 24 * 366 * 11); + expect(format(date, 'ku')).toEqual('١١ ساڵیتر'); + }); +}); From 5d85a1db51ff343bcb24daf7be916d8111779889 Mon Sep 17 00:00:00 2001 From: aryanmajeed Date: Sat, 30 Apr 2022 02:05:46 +0300 Subject: [PATCH 6/6] import the kurdish file --- src/lang/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lang/index.ts b/src/lang/index.ts index 699b0fb..dfecca5 100644 --- a/src/lang/index.ts +++ b/src/lang/index.ts @@ -23,6 +23,7 @@ export { default as it } from './it'; export { default as ja } from './ja'; export { default as ka } from './ka'; export { default as ko } from './ko'; +export { default as ku } from './ku'; export { default as ml } from './ml'; export { default as my } from './my'; export { default as nb_NO } from './nb_NO';