diff --git a/js/data/locale/af/dateres.json b/js/data/locale/af/dateres.json
new file mode 100644
index 0000000000..fe44f9847d
--- /dev/null
+++ b/js/data/locale/af/dateres.json
@@ -0,0 +1,16 @@
+{
+ "AM/PM": "Vm./nm.",
+ "Day": "Dag",
+ "Day of Year": "Dag van jaar",
+ "Hour": "Uur",
+ "Minute": "Minuut",
+ "Month": "Maand",
+ "Second": "Sekonde",
+ "Time Zone": "Tydsone",
+ "Week of Month": "Week van maand",
+ "Year": "Jaar",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "U",
+ "HH": "UU"
+}
\ No newline at end of file
diff --git a/js/data/locale/agq/dateres.json b/js/data/locale/agq/dateres.json
new file mode 100644
index 0000000000..0d8bd629f4
--- /dev/null
+++ b/js/data/locale/agq/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "â tsɨ̀",
+ "Day": "utsuʔ",
+ "Era": "kɨtîgh",
+ "Hour": "tàm",
+ "Minute": "menè",
+ "Month": "ndzɔŋ",
+ "Second": "sɛkɔ̀n",
+ "Time Zone": "dɨŋò kɨ enɨ̀gha",
+ "Week": "ewɨn",
+ "Year": "kɨnûm",
+ "D": "U",
+ "DD": "UU",
+ "YY": "KK",
+ "YYYY": "KKKK",
+ "M": "N",
+ "MM": "NN",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/ak/dateres.json b/js/data/locale/ak/dateres.json
new file mode 100644
index 0000000000..8683bbbf1b
--- /dev/null
+++ b/js/data/locale/ak/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Da bere",
+ "Day": "Da",
+ "Era": "Bere",
+ "Hour": "Dɔnhwer",
+ "Minute": "Sema",
+ "Month": "Bosome",
+ "Second": "Sɛkɛnd",
+ "Time Zone": "Bere apaamu",
+ "Week": "Dapɛn",
+ "Year": "Afe",
+ "D": "DA",
+ "DD": "DA",
+ "YY": "AA",
+ "YYYY": "AFE",
+ "M": "B",
+ "MM": "BB",
+ "H": "D",
+ "HH": "DD",
+ "mm": "ss"
+}
\ No newline at end of file
diff --git a/js/data/locale/am/dateres.json b/js/data/locale/am/dateres.json
new file mode 100644
index 0000000000..04e49144a5
--- /dev/null
+++ b/js/data/locale/am/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ጥዋት/ከሰዓት",
+ "Day": "ቀን",
+ "Day of Year": "የዓመቱ ቀን",
+ "Era": "ዘመን",
+ "Hour": "ሰዓት",
+ "Minute": "ደቂቃ",
+ "Month": "ወር",
+ "Second": "ሰከንድ",
+ "Time Zone": "የሰዓት ሰቅ",
+ "Week": "ሳምንት",
+ "Week of Month": "የወሩ ሳምንት",
+ "Year": "ዓመት",
+ "D": "ቀን",
+ "DD": "ቀን",
+ "YY": "ዓዓ",
+ "YYYY": "ዓመት",
+ "M": "ወር",
+ "MM": "ወር",
+ "H": "ሰ",
+ "HH": "ሰሰ",
+ "mm": "ደደ",
+ "ss": "ሰሰ"
+}
\ No newline at end of file
diff --git a/js/data/locale/ar/dateres.json b/js/data/locale/ar/dateres.json
new file mode 100644
index 0000000000..772b15c1de
--- /dev/null
+++ b/js/data/locale/ar/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ص/م",
+ "Day": "يوم",
+ "Day of Year": "يوم من السنة",
+ "Era": "العصر",
+ "Hour": "الساعات",
+ "Minute": "الدقائق",
+ "Month": "الشهر",
+ "Second": "الثواني",
+ "Time Zone": "التوقيت",
+ "Week": "الأسبوع",
+ "Week of Month": "الأسبوع من الشهر",
+ "Year": "السنة",
+ "D": "يوم",
+ "DD": "يوم",
+ "YY": "السنة",
+ "YYYY": "السنة",
+ "M": "الشهر",
+ "MM": "الشهر",
+ "H": "الساعات",
+ "HH": "الساعات",
+ "mm": "الدقائق",
+ "ss": "الثواني"
+}
\ No newline at end of file
diff --git a/js/data/locale/ar/sysres.json b/js/data/locale/ar/sysres.json
index 011a133f08..2c1400784b 100644
--- a/js/data/locale/ar/sysres.json
+++ b/js/data/locale/ar/sysres.json
@@ -1,24 +1,4 @@
{
- "#in {num}d": "zero#خلال {num} يوم|one#خلال يوم واحد|two#خلال يومين|few#خلال {num} أيام|many#خلال {num} يومًا|#خلال {num} يوم",
- "#in {num}h": "zero#خلال {num} ساعة|one#خلال ساعة واحدة|two#خلال ساعتين|few#خلال {num} ساعات|many#خلال {num} ساعة|#خلال {num} ساعة",
- "#in {num}mi": "zero#خلال {num} دقيقة|one#خلال دقيقة واحدة|two#خلال دقيقتين|few#خلال {num} دقائق|many#خلال {num} دقيقة|#خلال {num} دقيقة",
- "#in {num}mo": "zero#خلال {num} شهر|one#خلال شهر واحد|two#خلال شهرين|few#خلال {num} أشهر|many#خلال {num} شهرًا|#خلال {num} شهر",
- "#in {num}s": "zero#خلال {num} ثانية|one#خلال ثانية واحدة|two#خلال ثانيتين|few#خلال {num} ثوانٍ|many#خلال {num} ثانية|#خلال {num} ثانية",
- "#in {num}w": "zero#خلال {num} أسبوع|one#خلال أسبوع واحد|two#خلال {num} أسبوعين|few#خلال {num} أسابيع|many#خلال {num} أسبوعًا|#خلال {num} أسبوع",
- "#in {num}y": "zero#خلال {num} سنة|one#خلال سنة واحدة|two#خلال سنتين|few#خلال {num} سنوات|many#خلال {num} سنة|#خلال {num} سنة",
- "#{num} ms": "zero#{num} ملي ث|one#{num} ملي ث|two#{num} ملي ث|few#{num} ملي ث|many#{num} ملي ث|#{num} ملي ث",
- "#{num}d": "zero#{num} ي|one#{num} ي|two#{num} ي|few#{num} ي|many#{num} ي|#{num} ي",
- "#{num}d ago": "zero#قبل {num} يوم|one#قبل يوم واحد|two#قبل يومين|few#قبل {num} أيام|many#قبل {num} يومًا|#قبل {num} يوم",
- "#{num}h": "zero#{num} س|one#{num} س|two#{num} س|few#{num} س|many#{num} س|#{num} س",
- "#{num}h ago": "zero#قبل {num} ساعة|one#قبل ساعة واحدة|two#قبل ساعتين|few#قبل {num} ساعات|many#قبل {num} ساعة|#قبل {num} ساعة",
- "#{num}mi ago": "zero#قبل {num} دقيقة|one#قبل دقيقة واحدة|two#قبل دقيقتين|few#قبل {num} دقائق|many#قبل {num} دقيقة|#قبل {num} دقيقة",
- "#{num}mo ago": "zero#قبل {num} شهر|one#قبل شهر واحد|two#قبل شهرين|few#خلال {num} أشهر|many#قبل {num} شهرًا|#قبل {num} شهر",
- "#{num}s": "zero#{num} ث|one#{num} ث|two#{num} ث|few#{num} ث|many#{num} ث|#{num} ث",
- "#{num}s ago": "zero#قبل {num} ثانية|one#قبل ثانية واحدة|two#قبل ثانيتين|few#قبل {num} ثوانٍ|many#قبل {num} ثانية|#قبل {num} ثانية",
- "#{num}w": "zero#{num} أ|one#{num} أ|two#{num} أ|few#{num} أ|many#{num} أ|#{num} أ",
- "#{num}w ago": "zero#قبل {num} أسبوع|one#قبل أسبوع واحد|two#قبل أسبوعين|few#قبل {num} أسابيع|many#قبل {num} أسبوعًا|#قبل {num} أسبوع",
- "#{num}y": "zero#{num} سنة|one#{num} سنة|two#{num} سنة|few#{num} سنة|many#{num} سنة|#{num} سنة",
- "#{num}y ago": "zero#قبل {num} سنة|one#قبل سنة واحدة|two#قبل سنتين|few#قبل {num} سنوات|many#قبل {num} سنة|#قبل {num} سنة",
"1#1 day ago|#{num} days ago": "zero#قبل {num} يوم|one#قبل يوم واحد|two#قبل يومين|few#قبل {num} أيام|many#قبل {num} يومًا|#قبل {num} يوم",
"1#1 day|#{num} days": "zero#{num} يوم|one#يوم|two#يومان|few#{num} أيام|many#{num} يومًا|#{num} يوم",
"1#1 dy ago|#{num} dys ago": "zero#قبل {num} يوم|one#قبل يوم واحد|two#قبل يومين|few#قبل {num} أيام|many#قبل {num} يومًا|#قبل {num} يوم",
@@ -29,19 +9,19 @@
"1#1 hr|#{num} hrs": "zero#{num} س|one#{num} س|two#{num} س|few#{num} س|many#{num} س|#{num} س",
"1#1 millisecond|#{num} milliseconds": "zero#{num} ملي ثانية|one#{num} ملي ثانية|two#{num} ملي ثانية|few#{num} ملي ثانية|many#{num} ملي ثانية|#{num} ملي ثانية",
"1#1 min ago|#{num} min ago": "zero#قبل {num} دقيقة|one#قبل دقيقة واحدة|two#قبل دقيقتين|few#قبل {num} دقائق|many#قبل {num} دقيقة|#قبل {num} دقيقة",
- "1#1 minute ago|#{num} minutes ago": "zero#قبل {num} دقيقة|one#قبل دقيقة واحدة|two#قبل دقيقتين|few#قبل {num} دقائق|many#قبل {num} دقيقة|#قبل {num} دقيقة",
- "1#1 minute|#{num} minutes": "zero#{num} دقيقة|one#دقيقة|two#دقيقتان|few#{num} دقائق|many#{num} دقيقة|#{num} دقيقة",
"1#1 min|#{num} min": "zero#{num} د|one#{num} د|two#{num} د|few#{num} د|many#{num} د|#{num} د",
"1#1 mi|#{num} min": "zero#{num} د|one#{num} د|two#{num} د|few#{num} د|many#{num} د|#{num} د",
+ "1#1 minute ago|#{num} minutes ago": "zero#قبل {num} دقيقة|one#قبل دقيقة واحدة|two#قبل دقيقتين|few#قبل {num} دقائق|many#قبل {num} دقيقة|#قبل {num} دقيقة",
+ "1#1 minute|#{num} minutes": "zero#{num} دقيقة|one#دقيقة|two#دقيقتان|few#{num} دقائق|many#{num} دقيقة|#{num} دقيقة",
"1#1 mon ago|#{num} mons ago": "zero#قبل {num} شهر|one#قبل شهر واحد|two#قبل شهرين|few#قبل {num} أشهر|many#قبل {num} شهرًا|#قبل {num} شهر",
+ "1#1 mon|#{num} mons": "zero#{num} شهر|one#شهر|two#شهران|few#{num} أشهر|many#{num} شهرًا|#{num} شهر",
"1#1 month ago|#{num} months ago": "zero#قبل {num} شهر|one#قبل شهر واحد|two#قبل شهرين|few#قبل {num} أشهر|many#قبل {num} شهرًا|#قبل {num} شهر",
"1#1 month|#{num} months": "zero#{num} شهر|one#شهر|two#شهران|few#{num} أشهر|many#{num} شهرًا|#{num} شهر",
- "1#1 mon|#{num} mons": "zero#{num} شهر|one#شهر|two#شهران|few#{num} أشهر|many#{num} شهرًا|#{num} شهر",
"1#1 mo|#{num} mos": "zero#{num} شهر|one#شهر|two#شهران|few#{num} أشهر|many#{num} شهرًا|#{num} شهر",
"1#1 sec ago|#{num} sec ago": "zero#قبل {num} ثانية|one#قبل ثانية واحدة|two#قبل ثانيتين|few#قبل {num} ثوانِ|many#قبل {num} ثانية|#قبل {num} ثانية",
+ "1#1 sec|#{num} sec": "zero#{num} ث|one#{num} ث|two#{num} ث|few#{num} ث|many#{num} ث|#{num} ث",
"1#1 second ago|#{num} seconds ago": "zero#قبل {num} ثانية|one#قبل ثانية واحدة|two#قبل ثانيتين|few#قبل {num} ثوانِ|many#قبل {num} ثانية|#قبل {num} ثانية",
"1#1 second|#{num} seconds": "zero#{num} ثانية|one#ثانية|two#ثانيتان|few#{num} ثوان|many#{num} ثانية|#{num} ثانية",
- "1#1 sec|#{num} sec": "zero#{num} ث|one#{num} ث|two#{num} ث|few#{num} ث|many#{num} ث|#{num} ث",
"1#1 se|#{num} sec": "zero#{num} ث|one#{num} ث|two#{num} ث|few#{num} ث|many#{num} ث|#{num} ث",
"1#1 week ago|#{num} weeks ago": "zero#قبل {num} أسبوع|one#قبل أسبوع واحد|two#قبل أسبوعين|few#قبل {num} أسابيع|many#قبل {num} أسبوعًا|#قبل {num} أسبوع",
"1#1 week|#{num} weeks": "zero#{num} أسبوع|one#أسبوع|two#أسبوعان|few#{num} أسابيع|many#{num} أسبوعًا|#{num} أسبوع",
@@ -55,16 +35,20 @@
"1#in 1 dy|#in {num} dys": "zero#خلال {num} يوم|one#خلال يوم واحد|two#خلال يومين|few#خلال {num} أيام|many#خلال {num} يومًا|#خلال {num} يوم",
"1#in 1 hour|#in {num} hours": "zero#خلال {num} ساعة|one#خلال ساعة واحدة|two#خلال ساعتين|few#خلال {num} ساعات|many#خلال {num} ساعة|#خلال {num} ساعة",
"1#in 1 hr|#in {num} hrs": "zero#خلال {num} ساعة|one#خلال ساعة واحدة|two#خلال ساعتين|few#خلال {num} ساعات|many#خلال {num} ساعة|#خلال {num} ساعة",
- "1#in 1 minute|#in {num} minutes": "zero#خلال {num} دقيقة|one#خلال دقيقة واحدة|two#خلال دقيقتين|few#خلال {num} دقائق|many#خلال {num} دقيقة|#خلال {num} دقيقة",
"1#in 1 min|#in {num} min": "zero#خلال {num} دقيقة|one#خلال دقيقة واحدة|two#خلال دقيقتين|few#خلال {num} دقائق|many#خلال {num} دقيقة|#خلال {num} دقيقة",
- "1#in 1 month|#in {num} months": "zero#خلال {num} شهر|one#خلال شهر واحد|two#خلال شهرين|few#خلال {num} أشهر|many#خلال {num} شهرًا|#خلال {num} شهر",
+ "1#in 1 minute|#in {num} minutes": "zero#خلال {num} دقيقة|one#خلال دقيقة واحدة|two#خلال دقيقتين|few#خلال {num} دقائق|many#خلال {num} دقيقة|#خلال {num} دقيقة",
"1#in 1 mon|#in {num} mons": "zero#خلال {num} شهر|one#خلال شهر واحد|two#خلال شهرين|few#خلال {num} أشهر|many#خلال {num} شهرًا|#خلال {num} شهر",
- "1#in 1 second|#in {num} seconds": "zero#خلال {num} ثانية|one#خلال ثانية واحدة|two#خلال ثانيتين|few#خلال {num} ثوانٍ|many#خلال {num} ثانية|#خلال {num} ثانية",
+ "1#in 1 month|#in {num} months": "zero#خلال {num} شهر|one#خلال شهر واحد|two#خلال شهرين|few#خلال {num} أشهر|many#خلال {num} شهرًا|#خلال {num} شهر",
"1#in 1 sec|#in {num} sec": "zero#خلال {num} ثانية|one#خلال ثانية واحدة|two#خلال ثانيتين|few#خلال {num} ثوانٍ|many#خلال {num} ثانية|#خلال {num} ثانية",
+ "1#in 1 second|#in {num} seconds": "zero#خلال {num} ثانية|one#خلال ثانية واحدة|two#خلال ثانيتين|few#خلال {num} ثوانٍ|many#خلال {num} ثانية|#خلال {num} ثانية",
"1#in 1 week|#in {num} weeks": "zero#خلال {num} أسبوع|one#خلال أسبوع واحد|two#خلال أسبوعين|few#خلال {num} أسابيع|many#خلال {num} أسبوعًا|#خلال {num} أسبوع",
"1#in 1 wk|#in {num} wks": "zero#خلال {num} أسبوع|one#خلال أسبوع واحد|two#خلال أسبوعين|few#خلال {num} أسابيع|many#خلال {num} أسبوعًا|#خلال {num} أسبوع",
"1#in 1 year|#in {num} years": "zero#خلال {num} سنة|one#خلال سنة واحدة|two#خلال سنتين|few#خلال {num} سنوات|many#خلال {num} سنة|#خلال {num} سنة",
"1#in 1 yr|#in {num} yrs": "zero#خلال {num} سنة|one#خلال سنة واحدة|two#خلال سنتين|few#خلال {num} سنوات|many#خلال {num} سنة|#خلال {num} سنة",
+ "a0-hebrew": "ص",
+ "a0": "ص",
+ "a1-hebrew": "م",
+ "a1": "م",
"B0": "في المساء",
"B1": "ص",
"B2": "ليلاً",
@@ -74,100 +58,202 @@
"B6": "م",
"B7": "بعد الظهر",
"B8": "مساءً",
+ "durationLongDays": "zero#{num} يوم|one#يوم|two#يومان|few#{num} أيام|many#{num} يومًا|#{num} يوم",
+ "durationMediumHours": "zero#{num} س|one#{num} س|two#{num} س|few#{num} س|many#{num} س|#{num} س",
+ "durationMediumMillis": "zero#{num} ملي ث|one#{num} ملي ث|two#{num} ملي ث|few#{num} ملي ث|many#{num} ملي ث|#{num} ملي ث",
+ "durationMediumWeeks": "zero#{num} أ|one#{num} أ|two#{num} أ|few#{num} أ|many#{num} أ|#{num} أ",
+ "durationMediumYears": "zero#{num} سنة|one#{num} سنة|two#{num} سنة|few#{num} سنة|many#{num} سنة|#{num} سنة",
+ "durationShortMillis": "zero#{num} ملي ث|one#{num} ملي ث|two#{num} ملي ث|few#{num} ملي ث|many#{num} ملي ث|#{num} ملي ث",
+ "durationShortMinutes": "zero#{num} د|one#{num} د|two#{num} د|few#{num} د|many#{num} د|#{num} د",
+ "durationShortMonths": "zero#{num} شهر|one#شهر|two#شهران|few#{num} أشهر|many#{num} شهرًا|#{num} شهر",
+ "E0-hebrew": "ح",
"E0": "ح",
+ "E1-hebrew": "ن",
"E1": "ن",
+ "E2-hebrew": "ث",
"E2": "ث",
+ "E3-hebrew": "ر",
"E3": "ر",
+ "E4-hebrew": "خ",
"E4": "خ",
+ "E5-hebrew": "ج",
"E5": "ج",
+ "E6-hebrew": "س",
"E6": "س",
+ "EE0-hebrew": "أحد",
"EE0": "أحد",
+ "EE1-hebrew": "إثنين",
"EE1": "إثنين",
+ "EE2-hebrew": "ثلاثاء",
"EE2": "ثلاثاء",
+ "EE3-hebrew": "أربعاء",
"EE3": "أربعاء",
+ "EE4-hebrew": "خميس",
"EE4": "خميس",
+ "EE5-hebrew": "جمعة",
"EE5": "جمعة",
+ "EE6-hebrew": "سبت",
"EE6": "سبت",
+ "EEE0-hebrew": "الأحد",
"EEE0": "الأحد",
+ "EEE1-hebrew": "الاثنين",
"EEE1": "الاثنين",
+ "EEE2-hebrew": "الثلاثاء",
"EEE2": "الثلاثاء",
+ "EEE3-hebrew": "الأربعاء",
"EEE3": "الأربعاء",
+ "EEE4-hebrew": "الخميس",
"EEE4": "الخميس",
+ "EEE5-hebrew": "الجمعة",
"EEE5": "الجمعة",
+ "EEE6-hebrew": "السبت",
"EEE6": "السبت",
+ "EEEE0-hebrew": "الأحد",
"EEEE0": "الأحد",
+ "EEEE1-hebrew": "الاثنين",
"EEEE1": "الاثنين",
+ "EEEE2-hebrew": "الثلاثاء",
"EEEE2": "الثلاثاء",
+ "EEEE3-hebrew": "الأربعاء",
"EEEE3": "الأربعاء",
+ "EEEE4-hebrew": "الخميس",
"EEEE4": "الخميس",
+ "EEEE5-hebrew": "الجمعة",
"EEEE5": "الجمعة",
+ "EEEE6-hebrew": "السبت",
"EEEE6": "السبت",
- "G-1": "ق. م",
+ "finalSeparatorFull": "، و",
+ "finalSeparatorLong": "، و",
+ "finalSeparatorMedium": "، و",
+ "finalSeparatorShort": " و",
"G1": "ب.م",
- "MMM1": "يناير",
+ "G-1": "ق. م",
+ "#in {num}d": "zero#خلال {num} يوم|one#خلال يوم واحد|two#خلال يومين|few#خلال {num} أيام|many#خلال {num} يومًا|#خلال {num} يوم",
+ "#in {num}h": "zero#خلال {num} ساعة|one#خلال ساعة واحدة|two#خلال ساعتين|few#خلال {num} ساعات|many#خلال {num} ساعة|#خلال {num} ساعة",
+ "#in {num}mi": "zero#خلال {num} دقيقة|one#خلال دقيقة واحدة|two#خلال دقيقتين|few#خلال {num} دقائق|many#خلال {num} دقيقة|#خلال {num} دقيقة",
+ "#in {num}mo": "zero#خلال {num} شهر|one#خلال شهر واحد|two#خلال شهرين|few#خلال {num} أشهر|many#خلال {num} شهرًا|#خلال {num} شهر",
+ "#in {num}s": "zero#خلال {num} ثانية|one#خلال ثانية واحدة|two#خلال ثانيتين|few#خلال {num} ثوانٍ|many#خلال {num} ثانية|#خلال {num} ثانية",
+ "#in {num}w": "zero#خلال {num} أسبوع|one#خلال أسبوع واحد|two#خلال {num} أسبوعين|few#خلال {num} أسابيع|many#خلال {num} أسبوعًا|#خلال {num} أسبوع",
+ "#in {num}y": "zero#خلال {num} سنة|one#خلال سنة واحدة|two#خلال سنتين|few#خلال {num} سنوات|many#خلال {num} سنة|#خلال {num} سنة",
+ "MMM10-hebrew": "طيفت",
"MMM10": "أكتوبر",
+ "MMM11-hebrew": "شباط",
"MMM11": "نوفمبر",
+ "MMM12-hebrew": "آذار",
+ "MMM12-leap-hebrew": "آذار الأول",
"MMM12": "ديسمبر",
+ "MMM13-leap-hebrew": "آذار الثاني",
+ "MMM1-hebrew": "نيسان",
+ "MMM1": "يناير",
+ "MMM2-hebrew": "أيار",
"MMM2": "فبراير",
+ "MMM3-hebrew": "سيفان",
"MMM3": "مارس",
+ "MMM4-hebrew": "تموز",
"MMM4": "أبريل",
+ "MMM5-hebrew": "آب",
"MMM5": "مايو",
+ "MMM6-hebrew": "أيلول",
"MMM6": "يونيو",
+ "MMM7-hebrew": "تشري",
"MMM7": "يوليو",
+ "MMM8-hebrew": "مرحشوان",
"MMM8": "أغسطس",
+ "MMM9-hebrew": "كيسلو",
"MMM9": "سبتمبر",
- "MMMM1": "يناير",
+ "MMMM10-hebrew": "طيفت",
"MMMM10": "أكتوبر",
+ "MMMM11-hebrew": "شباط",
"MMMM11": "نوفمبر",
+ "MMMM12-hebrew": "آذار",
+ "MMMM12-leap-hebrew": "آذار الأول",
"MMMM12": "ديسمبر",
+ "MMMM13-leap-hebrew": "آذار الثاني",
+ "MMMM1-hebrew": "نيسان",
+ "MMMM1": "يناير",
+ "MMMM2-hebrew": "أيار",
"MMMM2": "فبراير",
+ "MMMM3-hebrew": "سيفان",
"MMMM3": "مارس",
+ "MMMM4-hebrew": "تموز",
"MMMM4": "أبريل",
+ "MMMM5-hebrew": "آب",
"MMMM5": "مايو",
+ "MMMM6-hebrew": "أيلول",
"MMMM6": "يونيو",
+ "MMMM7-hebrew": "تشري",
"MMMM7": "يوليو",
+ "MMMM8-hebrew": "مرحشوان",
"MMMM8": "أغسطس",
+ "MMMM9-hebrew": "كيسلو",
"MMMM9": "سبتمبر",
- "N1": "ي",
+ "N10-hebrew": "ط",
"N10": "أ",
+ "N11-hebrew": "ش",
"N11": "ن",
+ "N12-hebrew": "آ",
+ "N12-leap-hebrew": "آ",
"N12": "د",
+ "N13-leap-hebrew": "آ",
+ "N1-hebrew": "ن",
+ "N1": "ي",
+ "N2-hebrew": "أ",
"N2": "ف",
+ "N3-hebrew": "س",
"N3": "م",
+ "N4-hebrew": "ت",
"N4": "أ",
+ "N5-hebrew": "آ",
"N5": "م",
+ "N6-hebrew": "أ",
"N6": "ي",
+ "N7-hebrew": "ت",
"N7": "ي",
+ "N8-hebrew": "م",
"N8": "أ",
+ "N9-hebrew": "ك",
"N9": "س",
- "NN1": "ين",
+ "NN10-hebrew": "طي",
"NN10": "أك",
+ "NN11-hebrew": "شب",
"NN11": "نو",
+ "NN12-hebrew": "آذ",
+ "NN12-leap-hebrew": "آذ",
"NN12": "دي",
+ "NN13-leap-hebrew": "آذ",
+ "NN1-hebrew": "ني",
+ "NN1": "ين",
+ "NN2-hebrew": "أي",
"NN2": "فب",
+ "NN3-hebrew": "سي",
"NN3": "ما",
+ "NN4-hebrew": "تم",
"NN4": "أب",
+ "NN5-hebrew": "آب",
"NN5": "ما",
+ "NN6-hebrew": "أي",
"NN6": "يو",
+ "NN7-hebrew": "تش",
"NN7": "يو",
+ "NN8-hebrew": "مر",
"NN8": "أغ",
+ "NN9-hebrew": "كي",
"NN9": "سب",
- "a0": "ص",
- "a1": "م",
- "durationLongDays": "zero#{num} يوم|one#يوم|two#يومان|few#{num} أيام|many#{num} يومًا|#{num} يوم",
- "durationMediumHours": "zero#{num} س|one#{num} س|two#{num} س|few#{num} س|many#{num} س|#{num} س",
- "durationMediumMillis": "zero#{num} ملي ث|one#{num} ملي ث|two#{num} ملي ث|few#{num} ملي ث|many#{num} ملي ث|#{num} ملي ث",
- "durationMediumWeeks": "zero#{num} أ|one#{num} أ|two#{num} أ|few#{num} أ|many#{num} أ|#{num} أ",
- "durationMediumYears": "zero#{num} سنة|one#{num} سنة|two#{num} سنة|few#{num} سنة|many#{num} سنة|#{num} سنة",
- "durationShortMillis": "zero#{num} ملي ث|one#{num} ملي ث|two#{num} ملي ث|few#{num} ملي ث|many#{num} ملي ث|#{num} ملي ث",
- "durationShortMinutes": "zero#{num} د|one#{num} د|two#{num} د|few#{num} د|many#{num} د|#{num} د",
- "durationShortMonths": "zero#{num} شهر|one#شهر|two#شهران|few#{num} أشهر|many#{num} شهرًا|#{num} شهر",
- "finalSeparatorFull": "، و",
- "finalSeparatorLong": "، و",
- "finalSeparatorMedium": "، و",
- "finalSeparatorShort": " و",
+ "#{num}d ago": "zero#قبل {num} يوم|one#قبل يوم واحد|two#قبل يومين|few#قبل {num} أيام|many#قبل {num} يومًا|#قبل {num} يوم",
+ "#{num}d": "zero#{num} ي|one#{num} ي|two#{num} ي|few#{num} ي|many#{num} ي|#{num} ي",
+ "#{num}h ago": "zero#قبل {num} ساعة|one#قبل ساعة واحدة|two#قبل ساعتين|few#قبل {num} ساعات|many#قبل {num} ساعة|#قبل {num} ساعة",
+ "#{num}h": "zero#{num} س|one#{num} س|two#{num} س|few#{num} س|many#{num} س|#{num} س",
+ "#{num}mi ago": "zero#قبل {num} دقيقة|one#قبل دقيقة واحدة|two#قبل دقيقتين|few#قبل {num} دقائق|many#قبل {num} دقيقة|#قبل {num} دقيقة",
+ "#{num}mo ago": "zero#قبل {num} شهر|one#قبل شهر واحد|two#قبل شهرين|few#خلال {num} أشهر|many#قبل {num} شهرًا|#قبل {num} شهر",
+ "#{num} ms": "zero#{num} ملي ث|one#{num} ملي ث|two#{num} ملي ث|few#{num} ملي ث|many#{num} ملي ث|#{num} ملي ث",
+ "#{num}s ago": "zero#قبل {num} ثانية|one#قبل ثانية واحدة|two#قبل ثانيتين|few#قبل {num} ثوانٍ|many#قبل {num} ثانية|#قبل {num} ثانية",
+ "#{num}s": "zero#{num} ث|one#{num} ث|two#{num} ث|few#{num} ث|many#{num} ث|#{num} ث",
+ "#{num}w ago": "zero#قبل {num} أسبوع|one#قبل أسبوع واحد|two#قبل أسبوعين|few#قبل {num} أسابيع|many#قبل {num} أسبوعًا|#قبل {num} أسبوع",
+ "#{num}w": "zero#{num} أ|one#{num} أ|two#{num} أ|few#{num} أ|many#{num} أ|#{num} أ",
+ "#{num}y ago": "zero#قبل {num} سنة|one#قبل سنة واحدة|two#قبل سنتين|few#قبل {num} سنوات|many#قبل {num} سنة|#قبل {num} سنة",
+ "#{num}y": "zero#{num} سنة|one#{num} سنة|two#{num} سنة|few#{num} سنة|many#{num} سنة|#{num} سنة",
"separatorFull": "، و",
"separatorLong": "، و",
"separatorMedium": "، و",
"separatorShort": " و"
-}
\ No newline at end of file
+}
diff --git a/js/data/locale/as/dateres.json b/js/data/locale/as/dateres.json
new file mode 100644
index 0000000000..51757efb57
--- /dev/null
+++ b/js/data/locale/as/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "পূৰ্বাহ্ন/অপৰাহ্ন",
+ "Day": "দিন",
+ "Day of Year": "বছৰৰ দিন",
+ "Era": "যুগ",
+ "Hour": "ঘণ্টা",
+ "Minute": "মিনিট",
+ "Month": "মাহ",
+ "Second": "ছেকেণ্ড",
+ "Time Zone": "সময় ক্ষেত্ৰ",
+ "Week": "সপ্তাহ",
+ "Week of Month": "মাহৰ সপ্তাহ",
+ "Year": "বছৰ",
+ "D": "দ",
+ "DD": "দদ",
+ "YY": "বব",
+ "YYYY": "বছৰ",
+ "M": "ম",
+ "MM": "মম",
+ "H": "ঘ",
+ "HH": "ঘঘ",
+ "mm": "মম",
+ "ss": "ছছ"
+}
\ No newline at end of file
diff --git a/js/data/locale/asa/dateres.json b/js/data/locale/asa/dateres.json
new file mode 100644
index 0000000000..ced0b342f6
--- /dev/null
+++ b/js/data/locale/asa/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "Marango athiku",
+ "Day": "Thiku",
+ "Era": "Edhi",
+ "Hour": "Thaa",
+ "Minute": "Dakika",
+ "Month": "Mweji",
+ "Second": "Thekunde",
+ "Time Zone": "Majira Athaa",
+ "Week": "Ndisha",
+ "Year": "Mwaka",
+ "D": "T",
+ "DD": "TT",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "T",
+ "HH": "TT",
+ "mm": "dd",
+ "ss": "tt"
+}
\ No newline at end of file
diff --git a/js/data/locale/ast/dateres.json b/js/data/locale/ast/dateres.json
new file mode 100644
index 0000000000..f1afca62a3
--- /dev/null
+++ b/js/data/locale/ast/dateres.json
@@ -0,0 +1,14 @@
+{
+ "AM/PM": "periodu del día",
+ "Day": "día",
+ "Era": "era",
+ "Hour": "hora",
+ "Minute": "minutu",
+ "Month": "mes",
+ "Second": "segundu",
+ "Time Zone": "estaya horaria",
+ "Week": "selmana",
+ "Year": "añu",
+ "YY": "AA",
+ "YYYY": "AÑU"
+}
\ No newline at end of file
diff --git a/js/data/locale/az/Cyrl/dateres.json b/js/data/locale/az/Cyrl/dateres.json
new file mode 100644
index 0000000000..ec809a68ae
--- /dev/null
+++ b/js/data/locale/az/Cyrl/dateres.json
@@ -0,0 +1,6 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day of Year": "Day Of Year",
+ "Time Zone": "Zone",
+ "Week of Month": "Week Of Month"
+}
\ No newline at end of file
diff --git a/js/data/locale/az/dateres.json b/js/data/locale/az/dateres.json
new file mode 100644
index 0000000000..531f2e7196
--- /dev/null
+++ b/js/data/locale/az/dateres.json
@@ -0,0 +1,21 @@
+{
+ "Day": "Gün",
+ "Day of Year": "ilin günü",
+ "Hour": "Saat",
+ "Minute": "Dəqiqə",
+ "Month": "Ay",
+ "Second": "Saniyə",
+ "Time Zone": "Saat Qurşağı",
+ "Week": "Həftə",
+ "Week of Month": "Ayın həftəsi",
+ "Year": "İl",
+ "D": "G",
+ "DD": "GG",
+ "YY": "İL",
+ "YYYY": "İL",
+ "M": "AY",
+ "MM": "AY",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/bas/dateres.json b/js/data/locale/bas/dateres.json
new file mode 100644
index 0000000000..243238bab3
--- /dev/null
+++ b/js/data/locale/bas/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "njǎmùha",
+ "Day": "kɛl",
+ "Era": "kèk",
+ "Hour": "ŋgɛŋ",
+ "Minute": "ŋget",
+ "Month": "soŋ",
+ "Second": "hìŋgeŋget",
+ "Time Zone": "komboo i ŋgɛŋ",
+ "Week": "sɔndɛ̂",
+ "Year": "ŋwìi",
+ "D": "K",
+ "DD": "KK",
+ "YY": "ŊŊ",
+ "YYYY": "ŊŊŊŊ",
+ "M": "S",
+ "MM": "SS",
+ "H": "Ŋ",
+ "HH": "ŊŊ",
+ "mm": "ŋŋ",
+ "ss": "hh"
+}
\ No newline at end of file
diff --git a/js/data/locale/be/dateres.json b/js/data/locale/be/dateres.json
new file mode 100644
index 0000000000..4f84ba5f7c
--- /dev/null
+++ b/js/data/locale/be/dateres.json
@@ -0,0 +1,23 @@
+{
+ "Day": "дзень",
+ "Day of Year": "дзень года",
+ "Era": "эра",
+ "Hour": "гадзіна",
+ "Minute": "хвіліна",
+ "Month": "месяц",
+ "Second": "секунда",
+ "Time Zone": "часавы пояс",
+ "Week": "тыд",
+ "Week of Month": "тыдзень месяца",
+ "Year": "год",
+ "D": "Д",
+ "DD": "ДД",
+ "YY": "ГГ",
+ "YYYY": "ГОД",
+ "M": "М",
+ "MM": "ММ",
+ "H": "Г",
+ "HH": "ГГ",
+ "mm": "хх",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/bem/dateres.json b/js/data/locale/bem/dateres.json
new file mode 100644
index 0000000000..f9623eadd3
--- /dev/null
+++ b/js/data/locale/bem/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "Akasuba",
+ "Day": "Ubushiku",
+ "Era": "Inkulo",
+ "Hour": "Insa",
+ "Minute": "Mineti",
+ "Month": "Umweshi",
+ "Second": "Sekondi",
+ "Time Zone": "Zone",
+ "Week": "Umulungu",
+ "Year": "Umwaka",
+ "D": "U",
+ "DD": "UU",
+ "YY": "UU",
+ "YYYY": "UUUU",
+ "M": "U",
+ "MM": "UU",
+ "H": "I",
+ "HH": "II"
+}
\ No newline at end of file
diff --git a/js/data/locale/bez/dateres.json b/js/data/locale/bez/dateres.json
new file mode 100644
index 0000000000..2331a92fc5
--- /dev/null
+++ b/js/data/locale/bez/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Lwamelau",
+ "Day": "Sihu",
+ "Era": "Amajira",
+ "Hour": "Saa",
+ "Minute": "Dakika",
+ "Month": "Mwedzi",
+ "Second": "Sekunde",
+ "Time Zone": "Amajira ga saa",
+ "Week": "Mlungu gumamfu",
+ "Year": "Mwaha",
+ "D": "S",
+ "DD": "SS",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/bg/dateres.json b/js/data/locale/bg/dateres.json
new file mode 100644
index 0000000000..bc5d811284
--- /dev/null
+++ b/js/data/locale/bg/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "пр.об./сл.об.",
+ "Day": "ден",
+ "Day of Year": "ден от годината",
+ "Era": "ера",
+ "Hour": "час",
+ "Minute": "минута",
+ "Month": "месец",
+ "Second": "секунда",
+ "Time Zone": "часова зона",
+ "Week": "седмица",
+ "Week of Month": "седмица от месеца",
+ "Year": "година",
+ "D": "Д",
+ "DD": "ДД",
+ "YY": "ГГ",
+ "YYYY": "ГГГГ",
+ "M": "М",
+ "MM": "ММ",
+ "H": "Ч",
+ "HH": "ЧЧ",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/bm/dateres.json b/js/data/locale/bm/dateres.json
new file mode 100644
index 0000000000..88e8112751
--- /dev/null
+++ b/js/data/locale/bm/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "sɔgɔma/tile/wula/su",
+ "Day": "don",
+ "Era": "tile",
+ "Hour": "lɛrɛ",
+ "Minute": "miniti",
+ "Month": "kalo",
+ "Second": "sekondi",
+ "Time Zone": "sigikun tilena",
+ "Week": "dɔgɔkun",
+ "Year": "san",
+ "YY": "SS",
+ "YYYY": "SAN",
+ "M": "K",
+ "MM": "KK",
+ "H": "L",
+ "HH": "LL"
+}
\ No newline at end of file
diff --git a/js/data/locale/bn/dateres.json b/js/data/locale/bn/dateres.json
new file mode 100644
index 0000000000..312959eb33
--- /dev/null
+++ b/js/data/locale/bn/dateres.json
@@ -0,0 +1,23 @@
+{
+ "Day": "দিন",
+ "Day of Year": "বছরের দিন",
+ "Era": "যুগ",
+ "Hour": "ঘণ্টা",
+ "Minute": "মিনিট",
+ "Month": "মাস",
+ "Second": "সেকেন্ড",
+ "Time Zone": "সময় অঞ্চল",
+ "Week": "সপ্তাহ",
+ "Week of Month": "মাসের সপ্তাহ",
+ "Year": "বছর",
+ "D": "দ",
+ "DD": "দদ",
+ "YY": "বব",
+ "YYYY": "বছর",
+ "M": "ম",
+ "MM": "মম",
+ "H": "ঘ",
+ "HH": "ঘঘ",
+ "mm": "মম",
+ "ss": "সস"
+}
\ No newline at end of file
diff --git a/js/data/locale/bo/dateres.json b/js/data/locale/bo/dateres.json
new file mode 100644
index 0000000000..f24b3c03d0
--- /dev/null
+++ b/js/data/locale/bo/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "ཉིན།",
+ "Hour": "ཆུ་ཚོད་",
+ "Minute": "སྐར་མ།",
+ "Month": "ཟླ་བ་",
+ "Second": "སྐར་ཆ།",
+ "Time Zone": "དུས་ཚོད།",
+ "Year": "ལོ།",
+ "D": "ཉ",
+ "DD": "ཉཉ",
+ "YY": "ལལ",
+ "YYYY": "ལོ།",
+ "M": "ཟ",
+ "MM": "ཟཟ",
+ "H": "ཆ",
+ "HH": "ཆཆ",
+ "mm": "སས",
+ "ss": "སས"
+}
\ No newline at end of file
diff --git a/js/data/locale/br/dateres.json b/js/data/locale/br/dateres.json
new file mode 100644
index 0000000000..b6da7d8ba9
--- /dev/null
+++ b/js/data/locale/br/dateres.json
@@ -0,0 +1,17 @@
+{
+ "AM/PM": "AM/GM",
+ "Day": "Deiz",
+ "Era": "Amzervezh",
+ "Hour": "Eur",
+ "Minute": "Munut",
+ "Month": "Miz",
+ "Second": "Eilenn",
+ "Time Zone": "Takad eur",
+ "Week": "Sizhun",
+ "Year": "Bloaz",
+ "YY": "BB",
+ "YYYY": "BBBB",
+ "H": "E",
+ "HH": "EE",
+ "ss": "ee"
+}
\ No newline at end of file
diff --git a/js/data/locale/brx/dateres.json b/js/data/locale/brx/dateres.json
new file mode 100644
index 0000000000..f3a7e42975
--- /dev/null
+++ b/js/data/locale/brx/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "फुं/बेलासे",
+ "Day": "सान",
+ "Era": "जौथाय",
+ "Hour": "रिंगा",
+ "Minute": "मिनिथ",
+ "Month": "दान",
+ "Second": "सेखेन्द",
+ "Time Zone": "ओनसोल",
+ "Week": "सबथा/हबथा",
+ "Year": "बोसोर",
+ "D": "स",
+ "DD": "सस",
+ "YY": "बब",
+ "YYYY": "बबबब",
+ "M": "द",
+ "MM": "दद",
+ "H": "र",
+ "HH": "रर",
+ "mm": "मम",
+ "ss": "सस"
+}
\ No newline at end of file
diff --git a/js/data/locale/bs/Cyrl/dateres.json b/js/data/locale/bs/Cyrl/dateres.json
new file mode 100644
index 0000000000..e61f5f02c8
--- /dev/null
+++ b/js/data/locale/bs/Cyrl/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "пре подне/поподне",
+ "Day": "дан",
+ "Day of Year": "Day Of Year",
+ "Era": "ера",
+ "Hour": "час",
+ "Minute": "минут",
+ "Month": "месец",
+ "Second": "секунд",
+ "Time Zone": "зона",
+ "Week": "недеља",
+ "Week of Month": "Week Of Month",
+ "Year": "година",
+ "D": "Д",
+ "DD": "ДД",
+ "YY": "ГГ",
+ "YYYY": "ГГГГ",
+ "M": "М",
+ "MM": "ММ",
+ "H": "Ч",
+ "HH": "ЧЧ",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/bs/dateres.json b/js/data/locale/bs/dateres.json
new file mode 100644
index 0000000000..0a6829dc18
--- /dev/null
+++ b/js/data/locale/bs/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "prijepodne/poslijepodne",
+ "Day": "dan",
+ "Day of Year": "dan u godini",
+ "Era": "era",
+ "Hour": "sat",
+ "Minute": "minuta",
+ "Month": "mjesec",
+ "Second": "sekunda",
+ "Time Zone": "vremenska zona",
+ "Week": "sedmica",
+ "Week of Month": "sedmica u mjesecu",
+ "Year": "godina",
+ "YY": "GG",
+ "YYYY": "GGGG",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/ca/dateres.json b/js/data/locale/ca/dateres.json
new file mode 100644
index 0000000000..524c54e3e5
--- /dev/null
+++ b/js/data/locale/ca/dateres.json
@@ -0,0 +1,16 @@
+{
+ "AM/PM": "a. m./p. m.",
+ "Day": "dia",
+ "Day of Year": "dia de l’any",
+ "Era": "era",
+ "Hour": "hora",
+ "Minute": "minut",
+ "Month": "mes",
+ "Second": "segon",
+ "Time Zone": "fus horari",
+ "Week": "setmana",
+ "Week of Month": "setmana del mes",
+ "Year": "any",
+ "YY": "AA",
+ "YYYY": "ANY"
+}
\ No newline at end of file
diff --git a/js/data/locale/ccp/dateres.json b/js/data/locale/ccp/dateres.json
new file mode 100644
index 0000000000..a8e4434277
--- /dev/null
+++ b/js/data/locale/ccp/dateres.json
@@ -0,0 +1,21 @@
+{
+ "Day": "𑄘𑄨𑄚𑄴",
+ "Era": "𑄡𑄪𑄇𑄴",
+ "Hour": "𑄊𑄮𑄚𑄴𑄓",
+ "Minute": "𑄟𑄨𑄚𑄨𑄖𑄴",
+ "Month": "𑄟𑄏𑄴",
+ "Second": "𑄥𑄬𑄉𑄬𑄚𑄴",
+ "Time Zone": "𑄃𑄧𑄇𑄴𑄖𑄧𑄢𑄴 𑄎𑄉",
+ "Week": "𑄥𑄛𑄴𑄖",
+ "Year": "𑄝𑄧𑄏𑄧𑄢𑄴",
+ "D": "�",
+ "DD": "��",
+ "YY": "��",
+ "YYYY": "����",
+ "M": "�",
+ "MM": "��",
+ "H": "�",
+ "HH": "��",
+ "mm": "��",
+ "ss": "��"
+}
\ No newline at end of file
diff --git a/js/data/locale/ce/dateres.json b/js/data/locale/ce/dateres.json
new file mode 100644
index 0000000000..55b2251fb9
--- /dev/null
+++ b/js/data/locale/ce/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "делкъал тӀехьа",
+ "Day": "де",
+ "Day of Year": "шеран де",
+ "Era": "мур",
+ "Hour": "сахьт",
+ "Minute": "минот",
+ "Month": "бутт",
+ "Second": "секунд",
+ "Time Zone": "сахьтан аса",
+ "Week": "кӀира",
+ "Week of Month": "беттан кӀира",
+ "Year": "шо",
+ "D": "ДЕ",
+ "DD": "ДЕ",
+ "YY": "ШО",
+ "YYYY": "ШО",
+ "M": "Б",
+ "MM": "ББ",
+ "H": "С",
+ "HH": "СС",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/cgg/dateres.json b/js/data/locale/cgg/dateres.json
new file mode 100644
index 0000000000..7f1bd1630d
--- /dev/null
+++ b/js/data/locale/cgg/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Nyomushana/nyekiro",
+ "Day": "Eizooba",
+ "Era": "Obunaku",
+ "Hour": "Shaaha",
+ "Minute": "Edakiika",
+ "Month": "Omwezi",
+ "Second": "Obucweka/Esekendi",
+ "Time Zone": "Zone",
+ "Week": "Esande",
+ "Year": "Omwaka",
+ "D": "E",
+ "DD": "EE",
+ "YY": "OO",
+ "YYYY": "OOOO",
+ "M": "O",
+ "MM": "OO",
+ "H": "S",
+ "HH": "SS",
+ "mm": "ee",
+ "ss": "oo"
+}
\ No newline at end of file
diff --git a/js/data/locale/chr/dateres.json b/js/data/locale/chr/dateres.json
new file mode 100644
index 0000000000..18461485fc
--- /dev/null
+++ b/js/data/locale/chr/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ᏌᎾᎴ/ᏒᎯᏱ",
+ "Day": "ᎢᎦ",
+ "Day of Year": "ᎢᎦ ᎤᏕᏘᏴᏌᏗᏒᎢ",
+ "Era": "ᏗᏓᎴᏂᏍᎬ",
+ "Hour": "ᏑᏟᎶᏓ",
+ "Minute": "ᎢᏯᏔᏬᏍᏔᏅ",
+ "Month": "ᎧᎸᎢ",
+ "Second": "ᎠᏎᏢ",
+ "Time Zone": "ᏂᎬᎾᏛ ᏧᏓᎴᏅᏓ ᏓᏟᎢᎵᏍᏒᎢ",
+ "Week": "ᏒᎾᏙᏓᏆᏍᏗ",
+ "Week of Month": "ᏒᎾᏙᏓᏆᏍᏗ ᎧᎸᎢ",
+ "Year": "ᎤᏕᏘᏴᏌᏗᏒᎢ",
+ "D": "ᎢᎦ",
+ "DD": "ᎢᎦ",
+ "YY": "ᎤᎤ",
+ "YYYY": "ᎤᎤᎤᎤ",
+ "M": "Ꭷ",
+ "MM": "ᎧᎧ",
+ "H": "Ꮡ",
+ "HH": "ᏑᏑ",
+ "mm": "ꭲꭲ",
+ "ss": "ꭰꭰ"
+}
\ No newline at end of file
diff --git a/js/data/locale/ckb/dateres.json b/js/data/locale/ckb/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/ckb/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/cs/dateres.json b/js/data/locale/cs/dateres.json
new file mode 100644
index 0000000000..bd4f679e4b
--- /dev/null
+++ b/js/data/locale/cs/dateres.json
@@ -0,0 +1,16 @@
+{
+ "AM/PM": "část dne",
+ "Day": "den",
+ "Day of Year": "den v roce",
+ "Era": "letopočet",
+ "Hour": "hodina",
+ "Minute": "minuta",
+ "Month": "měsíc",
+ "Second": "sekunda",
+ "Time Zone": "časové pásmo",
+ "Week": "týden",
+ "Week of Month": "týden v měsíci",
+ "Year": "rok",
+ "YY": "RR",
+ "YYYY": "ROK"
+}
\ No newline at end of file
diff --git a/js/data/locale/cu/dateres.json b/js/data/locale/cu/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/cu/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/cy/dateres.json b/js/data/locale/cy/dateres.json
new file mode 100644
index 0000000000..8173c9e6dc
--- /dev/null
+++ b/js/data/locale/cy/dateres.json
@@ -0,0 +1,18 @@
+{
+ "Day": "Diwrnod",
+ "Day of Year": "Rhif y dydd yn y flwyddyn",
+ "Era": "Oes",
+ "Hour": "Awr",
+ "Minute": "Munud",
+ "Month": "Mis",
+ "Second": "Eiliad",
+ "Time Zone": "Cylchfa amser",
+ "Week": "Wythnos",
+ "Week of Month": "Rhif wythnos yn y mis",
+ "Year": "Blwyddyn",
+ "YY": "BB",
+ "YYYY": "BBBB",
+ "H": "A",
+ "HH": "AA",
+ "ss": "ee"
+}
\ No newline at end of file
diff --git a/js/data/locale/da/dateres.json b/js/data/locale/da/dateres.json
new file mode 100644
index 0000000000..b137e45d61
--- /dev/null
+++ b/js/data/locale/da/dateres.json
@@ -0,0 +1,17 @@
+{
+ "Day": "dag",
+ "Day of Year": "dag i året",
+ "Era": "æra",
+ "Hour": "time",
+ "Minute": "minut",
+ "Month": "måned",
+ "Second": "sekund",
+ "Time Zone": "tidszone",
+ "Week": "uge",
+ "Week of Month": "uge i måneden",
+ "Year": "år",
+ "YY": "ÅR",
+ "YYYY": "ÅR",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/dateres.json b/js/data/locale/dateres.json
new file mode 100644
index 0000000000..7717175793
--- /dev/null
+++ b/js/data/locale/dateres.json
@@ -0,0 +1,26 @@
+{
+ "AM/PM": "AM/PM",
+ "Day": "Day",
+ "Day of Year": "Day Of Year",
+ "Era": "Era",
+ "Hour": "Hour",
+ "Millisecond": "Millisecond",
+ "Minute": "Minute",
+ "Month": "Month",
+ "Second": "Second",
+ "Time Zone": "Time Zone",
+ "Week": "Week",
+ "Week of Month": "Week Of Month",
+ "Year": "Year",
+ "D": "D",
+ "DD": "DD",
+ "YY": "YY",
+ "YYYY": "YYYY",
+ "M": "M",
+ "MM": "MM",
+ "H": "H",
+ "HH": "HH",
+ "mm": "mm",
+ "ss": "ss",
+ "ms": "ms"
+}
\ No newline at end of file
diff --git a/js/data/locale/dav/dateres.json b/js/data/locale/dav/dateres.json
new file mode 100644
index 0000000000..500ba617c7
--- /dev/null
+++ b/js/data/locale/dav/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "KE/PE",
+ "Day": "Ituku",
+ "Era": "Ngelo",
+ "Hour": "Saa",
+ "Minute": "Dakika",
+ "Month": "Mori",
+ "Second": "Sekunde",
+ "Time Zone": "Majira ya saa",
+ "Week": "Juma",
+ "Year": "Mwaka",
+ "D": "I",
+ "DD": "II",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/de/dateres.json b/js/data/locale/de/dateres.json
new file mode 100644
index 0000000000..f9b89a2bcf
--- /dev/null
+++ b/js/data/locale/de/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Tageshälfte",
+ "Day": "Tag",
+ "Day of Year": "Tag des Jahres",
+ "Era": "Epoche",
+ "Hour": "Stunde",
+ "Month": "Monat",
+ "Second": "Sekunde",
+ "Time Zone": "Zeitzone",
+ "Week": "Woche",
+ "Week of Month": "Woche des Monats",
+ "Year": "Jahr",
+ "D": "T",
+ "DD": "TT",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/dje/dateres.json b/js/data/locale/dje/dateres.json
new file mode 100644
index 0000000000..2601bf41d6
--- /dev/null
+++ b/js/data/locale/dje/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Subbaahi/Zaarikay banda",
+ "Day": "Zaari",
+ "Era": "Zaman",
+ "Hour": "Guuru",
+ "Minute": "Miniti",
+ "Month": "Handu",
+ "Second": "Miti",
+ "Time Zone": "Leerazuu",
+ "Week": "Hebu",
+ "Year": "Jiiri",
+ "D": "Z",
+ "DD": "ZZ",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "M": "H",
+ "MM": "HH",
+ "H": "G",
+ "HH": "GG",
+ "ss": "mm"
+}
\ No newline at end of file
diff --git a/js/data/locale/dsb/dateres.json b/js/data/locale/dsb/dateres.json
new file mode 100644
index 0000000000..366f0f3905
--- /dev/null
+++ b/js/data/locale/dsb/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "połojca dnja",
+ "Day": "źeń",
+ "Era": "epocha",
+ "Hour": "góźina",
+ "Minute": "minuta",
+ "Month": "mjasec",
+ "Second": "sekunda",
+ "Time Zone": "casowe pasmo",
+ "Week": "tyźeń",
+ "Year": "lěto",
+ "D": "Ź",
+ "DD": "ŹŹ",
+ "YY": "LL",
+ "YYYY": "LLLL",
+ "H": "G",
+ "HH": "GG"
+}
\ No newline at end of file
diff --git a/js/data/locale/dua/dateres.json b/js/data/locale/dua/dateres.json
new file mode 100644
index 0000000000..97ca46f56a
--- /dev/null
+++ b/js/data/locale/dua/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "epasi a búnyá",
+ "Day": "búnyá",
+ "Era": "póndá",
+ "Hour": "ŋgandɛ",
+ "Minute": "ndɔkɔ",
+ "Month": "mɔ́di",
+ "Second": "píndí",
+ "Time Zone": "Zone",
+ "Week": "disama",
+ "Year": "mbú",
+ "D": "B",
+ "DD": "BB",
+ "YY": "MM",
+ "YYYY": "MBÚ",
+ "H": "Ŋ",
+ "HH": "ŊŊ",
+ "mm": "nn",
+ "ss": "pp"
+}
\ No newline at end of file
diff --git a/js/data/locale/dyo/dateres.json b/js/data/locale/dyo/dateres.json
new file mode 100644
index 0000000000..2b87f4aef2
--- /dev/null
+++ b/js/data/locale/dyo/dateres.json
@@ -0,0 +1,15 @@
+{
+ "AM/PM": "Bujom / Kalíim",
+ "Day": "Funak",
+ "Era": "Jamanay",
+ "Month": "Fuleeŋ",
+ "Time Zone": "Zone",
+ "Week": "Lóokuŋ",
+ "Year": "Emit",
+ "D": "FUNAK",
+ "DD": "FUNAK",
+ "YY": "EMIT",
+ "YYYY": "EMIT",
+ "M": "FULEEŊ",
+ "MM": "FULEEŊ"
+}
\ No newline at end of file
diff --git a/js/data/locale/dz/dateres.json b/js/data/locale/dz/dateres.json
new file mode 100644
index 0000000000..d986833241
--- /dev/null
+++ b/js/data/locale/dz/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "སྔ་ཆ/ཕྱི་ཆ་",
+ "Day": "ཚེས་",
+ "Era": "དུས་བསྐལ",
+ "Hour": "ཆུ་ཚོད",
+ "Minute": "སྐར་མ",
+ "Month": "ཟླ་ཝ་",
+ "Second": "སྐར་ཆཱ་",
+ "Time Zone": "དུས་ཀུལ",
+ "Week": "བདུན་ཕྲག",
+ "Year": "ལོ",
+ "D": "ཚ",
+ "DD": "ཚཚ",
+ "YY": "ལོ",
+ "YYYY": "ལོ",
+ "M": "ཟ",
+ "MM": "ཟཟ",
+ "H": "ཆ",
+ "HH": "ཆཆ",
+ "mm": "སས",
+ "ss": "སས"
+}
\ No newline at end of file
diff --git a/js/data/locale/ebu/dateres.json b/js/data/locale/ebu/dateres.json
new file mode 100644
index 0000000000..04a827eaa1
--- /dev/null
+++ b/js/data/locale/ebu/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Mũthenya",
+ "Era": "Ivinda",
+ "Hour": "Ithaa",
+ "Minute": "Ndagĩka",
+ "Month": "Mweri",
+ "Second": "Sekondi",
+ "Time Zone": "Gĩthaa",
+ "Week": "Kiumia",
+ "Year": "Mwaka",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "I",
+ "HH": "II",
+ "mm": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/ee/dateres.json b/js/data/locale/ee/dateres.json
new file mode 100644
index 0000000000..797d09739b
--- /dev/null
+++ b/js/data/locale/ee/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "ŋkekea me",
+ "Day": "ŋkeke",
+ "Era": "ŋɔli",
+ "Hour": "gaƒoƒo",
+ "Minute": "aɖabaƒoƒo",
+ "Month": "ɣleti",
+ "Second": "sekend",
+ "Time Zone": "nutomegaƒoƒo",
+ "Week": "kɔsiɖa ɖeka",
+ "Year": "ƒe",
+ "D": "Ŋ",
+ "DD": "ŊŊ",
+ "YY": "ƑE",
+ "YYYY": "ƑE",
+ "M": "Ɣ",
+ "MM": "ƔƔ",
+ "H": "G",
+ "HH": "GG",
+ "mm": "aa"
+}
\ No newline at end of file
diff --git a/js/data/locale/el/dateres.json b/js/data/locale/el/dateres.json
new file mode 100644
index 0000000000..297c417e74
--- /dev/null
+++ b/js/data/locale/el/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "Π.μ./μ.μ.",
+ "Day": "Ημέρα",
+ "Day of Year": "Ημέρα έτους",
+ "Era": "Περίοδος",
+ "Hour": "Ώρα",
+ "Minute": "Λεπτό",
+ "Month": "Μήνας",
+ "Second": "Δευτερόλεπτο",
+ "Time Zone": "Ζώνη ώρας",
+ "Week": "Εβδομάδα",
+ "Week of Month": "Εβδομάδα μήνα",
+ "Year": "Έτος",
+ "D": "Η",
+ "DD": "ΗΗ",
+ "YY": "ΈΈ",
+ "YYYY": "ΈΈΈΈ",
+ "M": "Μ",
+ "MM": "ΜΜ",
+ "H": "Ώ",
+ "HH": "ΏΏ",
+ "mm": "λλ",
+ "ss": "δδ"
+}
\ No newline at end of file
diff --git a/js/data/locale/en/dateres.json b/js/data/locale/en/dateres.json
new file mode 100644
index 0000000000..9d6f2e5a37
--- /dev/null
+++ b/js/data/locale/en/dateres.json
@@ -0,0 +1,5 @@
+{
+ "Day of Year": "Day of year",
+ "Time Zone": "Time zone",
+ "Week of Month": "Week of month"
+}
\ No newline at end of file
diff --git a/js/data/locale/eo/dateres.json b/js/data/locale/eo/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/eo/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/es/DO/dateres.json b/js/data/locale/es/DO/dateres.json
new file mode 100644
index 0000000000..6aeb9d66d3
--- /dev/null
+++ b/js/data/locale/es/DO/dateres.json
@@ -0,0 +1,8 @@
+{
+ "Day": "Día",
+ "Minute": "Minuto",
+ "Month": "Mes",
+ "Second": "Segundo",
+ "Week": "Semana",
+ "Year": "Año"
+}
\ No newline at end of file
diff --git a/js/data/locale/es/dateres.json b/js/data/locale/es/dateres.json
new file mode 100644
index 0000000000..95c06439c0
--- /dev/null
+++ b/js/data/locale/es/dateres.json
@@ -0,0 +1,16 @@
+{
+ "AM/PM": "a. m./p. m.",
+ "Day": "día",
+ "Day of Year": "día del año",
+ "Era": "era",
+ "Hour": "hora",
+ "Minute": "minuto",
+ "Month": "mes",
+ "Second": "segundo",
+ "Time Zone": "zona horaria",
+ "Week": "semana",
+ "Week of Month": "semana del mes",
+ "Year": "año",
+ "YY": "AA",
+ "YYYY": "AÑO"
+}
\ No newline at end of file
diff --git a/js/data/locale/et/dateres.json b/js/data/locale/et/dateres.json
new file mode 100644
index 0000000000..c5da8ccf63
--- /dev/null
+++ b/js/data/locale/et/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "enne/pärast lõunat",
+ "Day": "päev",
+ "Day of Year": "aasta päev",
+ "Era": "ajastu",
+ "Hour": "tund",
+ "Minute": "minut",
+ "Month": "kuu",
+ "Second": "sekund",
+ "Time Zone": "ajavöönd",
+ "Week": "nädal",
+ "Week of Month": "kuu nädal",
+ "Year": "aasta",
+ "D": "P",
+ "DD": "PP",
+ "YY": "AA",
+ "YYYY": "AAAA",
+ "M": "K",
+ "MM": "KK",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/eu/dateres.json b/js/data/locale/eu/dateres.json
new file mode 100644
index 0000000000..62240c38ce
--- /dev/null
+++ b/js/data/locale/eu/dateres.json
@@ -0,0 +1,21 @@
+{
+ "Day": "eguna",
+ "Day of Year": "urteko #. eguna",
+ "Era": "aroa",
+ "Hour": "ordua",
+ "Minute": "minutua",
+ "Month": "hilabetea",
+ "Second": "segundoa",
+ "Time Zone": "ordu-zona",
+ "Week": "astea",
+ "Week of Month": "hileko #. astea",
+ "Year": "urtea",
+ "D": "E",
+ "DD": "EE",
+ "YY": "UU",
+ "YYYY": "UUUU",
+ "M": "H",
+ "MM": "HH",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/ewo/dateres.json b/js/data/locale/ewo/dateres.json
new file mode 100644
index 0000000000..e44f271ce3
--- /dev/null
+++ b/js/data/locale/ewo/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Kírí / Ngəgógəle",
+ "Day": "Amǒs",
+ "Era": "Abǒg",
+ "Hour": "Awola",
+ "Minute": "Enútɛn",
+ "Month": "Ngɔn",
+ "Second": "Akábəga",
+ "Time Zone": "Nkɔŋ Awola",
+ "Week": "Sɔ́ndɔ",
+ "Year": "M̀bú",
+ "D": "A",
+ "DD": "AA",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "M": "N",
+ "MM": "NN",
+ "H": "A",
+ "HH": "AA",
+ "mm": "ee",
+ "ss": "aa"
+}
\ No newline at end of file
diff --git a/js/data/locale/fa/dateres.json b/js/data/locale/fa/dateres.json
new file mode 100644
index 0000000000..91e5696b39
--- /dev/null
+++ b/js/data/locale/fa/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "قبل/بعدازظهر",
+ "Day": "روز",
+ "Day of Year": "روز سال",
+ "Era": "دوره",
+ "Hour": "ساعت",
+ "Minute": "دقیقه",
+ "Month": "ماه",
+ "Second": "ثانیه",
+ "Time Zone": "منطقهٔ زمانی",
+ "Week": "هفته",
+ "Week of Month": "هفتهٔ ماه",
+ "Year": "سال",
+ "D": "روز",
+ "DD": "روز",
+ "YY": "سال",
+ "YYYY": "سال",
+ "M": "ماه",
+ "MM": "ماه",
+ "H": "ساعت",
+ "HH": "ساعت",
+ "mm": "دقیقه",
+ "ss": "ثانیه"
+}
\ No newline at end of file
diff --git a/js/data/locale/ff/dateres.json b/js/data/locale/ff/dateres.json
new file mode 100644
index 0000000000..332e3f6041
--- /dev/null
+++ b/js/data/locale/ff/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Sahnga",
+ "Day": "Ñalnde",
+ "Era": "Jamaanu",
+ "Hour": "Waktu",
+ "Minute": "Hoƴom",
+ "Month": "Lewru",
+ "Second": "Majaango",
+ "Time Zone": "Diiwaan waktu",
+ "Week": "Yontere",
+ "Year": "Hitaande",
+ "D": "Ñ",
+ "DD": "ÑÑ",
+ "YY": "HH",
+ "YYYY": "HHHH",
+ "M": "L",
+ "MM": "LL",
+ "H": "W",
+ "HH": "WW",
+ "mm": "hh",
+ "ss": "mm"
+}
\ No newline at end of file
diff --git a/js/data/locale/fi/dateres.json b/js/data/locale/fi/dateres.json
new file mode 100644
index 0000000000..837df772c5
--- /dev/null
+++ b/js/data/locale/fi/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "vuorokaudenaika",
+ "Day": "päivä",
+ "Day of Year": "vuodenpäivä",
+ "Era": "aikakausi",
+ "Hour": "tunti",
+ "Minute": "minuutti",
+ "Month": "kuukausi",
+ "Second": "sekunti",
+ "Time Zone": "aikavyöhyke",
+ "Week": "viikko",
+ "Week of Month": "kuukauden viikko",
+ "Year": "vuosi",
+ "D": "P",
+ "DD": "PP",
+ "YY": "VV",
+ "YYYY": "VVVV",
+ "M": "K",
+ "MM": "KK",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/fil/dateres.json b/js/data/locale/fil/dateres.json
new file mode 100644
index 0000000000..b343b92d67
--- /dev/null
+++ b/js/data/locale/fil/dateres.json
@@ -0,0 +1,21 @@
+{
+ "Day": "araw",
+ "Day of Year": "araw ng taon",
+ "Era": "panahon",
+ "Hour": "oras",
+ "Minute": "minuto",
+ "Month": "buwan",
+ "Second": "segundo",
+ "Time Zone": "time zone",
+ "Week": "linggo",
+ "Week of Month": "linggo ng buwan",
+ "Year": "taon",
+ "D": "A",
+ "DD": "AA",
+ "YY": "TT",
+ "YYYY": "TTTT",
+ "M": "B",
+ "MM": "BB",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/fo/dateres.json b/js/data/locale/fo/dateres.json
new file mode 100644
index 0000000000..2b300575c2
--- /dev/null
+++ b/js/data/locale/fo/dateres.json
@@ -0,0 +1,17 @@
+{
+ "Day": "dagur",
+ "Day of Year": "dagur í árinum",
+ "Era": "tíðarrokning",
+ "Hour": "tími",
+ "Minute": "minuttur",
+ "Month": "mánaður",
+ "Second": "sekund",
+ "Time Zone": "tíðarøki",
+ "Week": "vika",
+ "Week of Month": "vika í mánaðinum",
+ "Year": "ár",
+ "YY": "ÁR",
+ "YYYY": "ÁR",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/fr/CA/dateres.json b/js/data/locale/fr/CA/dateres.json
new file mode 100644
index 0000000000..176850c0d5
--- /dev/null
+++ b/js/data/locale/fr/CA/dateres.json
@@ -0,0 +1,4 @@
+{
+ "Day of Year": "jour de l’année",
+ "Week of Month": "semaine du mois"
+}
\ No newline at end of file
diff --git a/js/data/locale/fr/dateres.json b/js/data/locale/fr/dateres.json
new file mode 100644
index 0000000000..e9d548e144
--- /dev/null
+++ b/js/data/locale/fr/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "cadran",
+ "Day": "jour",
+ "Day of Year": "jour (année)",
+ "Era": "ère",
+ "Hour": "heure",
+ "Minute": "minute",
+ "Month": "mois",
+ "Second": "seconde",
+ "Time Zone": "fuseau horaire",
+ "Week": "semaine",
+ "Week of Month": "semaine (mois)",
+ "Year": "année",
+ "D": "J",
+ "DD": "JJ",
+ "YY": "AA",
+ "YYYY": "AAAA"
+}
\ No newline at end of file
diff --git a/js/data/locale/fur/dateres.json b/js/data/locale/fur/dateres.json
new file mode 100644
index 0000000000..983d442313
--- /dev/null
+++ b/js/data/locale/fur/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "toc dal dì",
+ "Day": "dì",
+ "Era": "ere",
+ "Hour": "ore",
+ "Minute": "minût",
+ "Month": "mês",
+ "Second": "secont",
+ "Time Zone": "zone",
+ "Week": "setemane",
+ "Year": "an",
+ "D": "DÌ",
+ "DD": "DÌ",
+ "YY": "AN",
+ "YYYY": "AN",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/fy/dateres.json b/js/data/locale/fy/dateres.json
new file mode 100644
index 0000000000..cc7c2ca0dd
--- /dev/null
+++ b/js/data/locale/fy/dateres.json
@@ -0,0 +1,15 @@
+{
+ "Day": "dei",
+ "Era": "Tiidsrin",
+ "Hour": "oere",
+ "Minute": "Minút",
+ "Month": "Moanne",
+ "Second": "Sekonde",
+ "Time Zone": "Zone",
+ "Week": "Wike",
+ "Year": "Jier",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/ga/dateres.json b/js/data/locale/ga/dateres.json
new file mode 100644
index 0000000000..eb482071fc
--- /dev/null
+++ b/js/data/locale/ga/dateres.json
@@ -0,0 +1,23 @@
+{
+ "AM/PM": "a.m./p.m.",
+ "Day": "Lá",
+ "Day of Year": "Lá den bhliain",
+ "Era": "Ré",
+ "Hour": "Uair",
+ "Minute": "Nóiméad",
+ "Month": "Mí",
+ "Second": "Soicind",
+ "Time Zone": "Crios Ama",
+ "Week": "Seachtain",
+ "Week of Month": "Seachtain den mhí",
+ "Year": "Bliain",
+ "D": "LÁ",
+ "DD": "LÁ",
+ "YY": "BB",
+ "YYYY": "BBBB",
+ "M": "MÍ",
+ "MM": "MÍ",
+ "H": "U",
+ "HH": "UU",
+ "mm": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/gd/dateres.json b/js/data/locale/gd/dateres.json
new file mode 100644
index 0000000000..38fa8a78cf
--- /dev/null
+++ b/js/data/locale/gd/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "m/f",
+ "Day": "latha",
+ "Day of Year": "là dhen bhliadhna",
+ "Era": "linn",
+ "Hour": "uair a thìde",
+ "Minute": "mionaid",
+ "Month": "mìos",
+ "Second": "diog",
+ "Time Zone": "roinn-tìde",
+ "Week": "seachdain",
+ "Week of Month": "seachdain dhen mhìos",
+ "Year": "bliadhna",
+ "D": "L",
+ "DD": "LL",
+ "YY": "BB",
+ "YYYY": "BBBB",
+ "H": "U",
+ "HH": "UU",
+ "ss": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/gl/dateres.json b/js/data/locale/gl/dateres.json
new file mode 100644
index 0000000000..74952f8c14
--- /dev/null
+++ b/js/data/locale/gl/dateres.json
@@ -0,0 +1,16 @@
+{
+ "AM/PM": "a.m./p.m.",
+ "Day": "día",
+ "Day of Year": "día do ano",
+ "Era": "era",
+ "Hour": "hora",
+ "Minute": "minuto",
+ "Month": "mes",
+ "Second": "segundo",
+ "Time Zone": "fuso horario",
+ "Week": "semana",
+ "Week of Month": "semana do mes",
+ "Year": "ano",
+ "YY": "AA",
+ "YYYY": "ANO"
+}
\ No newline at end of file
diff --git a/js/data/locale/gsw/dateres.json b/js/data/locale/gsw/dateres.json
new file mode 100644
index 0000000000..1f6c33a859
--- /dev/null
+++ b/js/data/locale/gsw/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "Tageshälfti",
+ "Day": "Tag",
+ "Era": "Epoche",
+ "Hour": "Schtund",
+ "Minute": "Minuute",
+ "Month": "Monet",
+ "Second": "Sekunde",
+ "Time Zone": "Zone",
+ "Week": "Wuche",
+ "Year": "Jaar",
+ "D": "T",
+ "DD": "TT",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/gu/dateres.json b/js/data/locale/gu/dateres.json
new file mode 100644
index 0000000000..1afdb61711
--- /dev/null
+++ b/js/data/locale/gu/dateres.json
@@ -0,0 +1,23 @@
+{
+ "Day": "દિવસ",
+ "Day of Year": "વર્ષનો દિવસ",
+ "Era": "યુગ",
+ "Hour": "કલાક",
+ "Minute": "મિનિટ",
+ "Month": "મહિનો",
+ "Second": "સેકન્ડ",
+ "Time Zone": "સમય ઝોન",
+ "Week": "અઠવાડિયું",
+ "Week of Month": "મહિનાનું અઠવાડિયું",
+ "Year": "વર્ષ",
+ "D": "દ",
+ "DD": "દદ",
+ "YY": "વવ",
+ "YYYY": "વવવવ",
+ "M": "મ",
+ "MM": "મમ",
+ "H": "ક",
+ "HH": "કક",
+ "mm": "મમ",
+ "ss": "સસ"
+}
\ No newline at end of file
diff --git a/js/data/locale/guz/dateres.json b/js/data/locale/guz/dateres.json
new file mode 100644
index 0000000000..998f01249a
--- /dev/null
+++ b/js/data/locale/guz/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Mambia gose Morogoba",
+ "Day": "Rituko",
+ "Era": "Ebiro",
+ "Hour": "Ensa",
+ "Minute": "Edakika",
+ "Month": "Omotienyi",
+ "Second": "Esekendi",
+ "Time Zone": "Chinse ‘chimo",
+ "Week": "Omokubio",
+ "Year": "Omwaka",
+ "D": "R",
+ "DD": "RR",
+ "YY": "OO",
+ "YYYY": "OOOO",
+ "M": "O",
+ "MM": "OO",
+ "H": "E",
+ "HH": "EE",
+ "mm": "ee",
+ "ss": "ee"
+}
\ No newline at end of file
diff --git a/js/data/locale/gv/dateres.json b/js/data/locale/gv/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/gv/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/ha/dateres.json b/js/data/locale/ha/dateres.json
new file mode 100644
index 0000000000..754cd648c6
--- /dev/null
+++ b/js/data/locale/ha/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Yini",
+ "Day": "Kwana",
+ "Era": "Zamani",
+ "Hour": "Awa",
+ "Minute": "Minti",
+ "Month": "Wata",
+ "Second": "Daƙiƙa",
+ "Time Zone": "Agogo",
+ "Week": "Mako",
+ "Year": "Shekara",
+ "D": "K",
+ "DD": "KK",
+ "YY": "SS",
+ "YYYY": "SSSS",
+ "M": "W",
+ "MM": "WW",
+ "H": "A",
+ "HH": "AA",
+ "ss": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/haw/dateres.json b/js/data/locale/haw/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/haw/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/he/dateres.json b/js/data/locale/he/dateres.json
new file mode 100644
index 0000000000..de1e5495a4
--- /dev/null
+++ b/js/data/locale/he/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "לפנה״צ/אחה״צ",
+ "Day": "יום",
+ "Day of Year": "יום בשנה",
+ "Era": "תקופה",
+ "Hour": "שעה",
+ "Minute": "דקה",
+ "Month": "חודש",
+ "Second": "שנייה",
+ "Time Zone": "אזור",
+ "Week": "שבוע",
+ "Week of Month": "השבוע בחודש",
+ "Year": "שנה",
+ "D": "יום",
+ "DD": "יום",
+ "YY": "שנה",
+ "YYYY": "שנה",
+ "M": "חודש",
+ "MM": "חודש",
+ "H": "שעה",
+ "HH": "שעה",
+ "mm": "דקה",
+ "ss": "שנייה"
+}
\ No newline at end of file
diff --git a/js/data/locale/he/sysres.json b/js/data/locale/he/sysres.json
index c42eddc5a9..a4824506d8 100644
--- a/js/data/locale/he/sysres.json
+++ b/js/data/locale/he/sysres.json
@@ -1,24 +1,4 @@
{
- "#in {num}d": "one#מחר|two#בעוד יומיים|many#בעוד {num} ימים|#בעוד {num} ימים",
- "#in {num}h": "one#בעוד שעה|two#בעוד שעתיים|many#בעוד {num} שע׳|#בעוד {num} שע׳",
- "#in {num}mi": "one#בעוד דקה|two#בעוד שתי דק׳|many#בעוד {num} דק׳|#בעוד {num} דק׳",
- "#in {num}mo": "one#בעוד חודש|two#בעוד חודשיים|many#בעוד {num} חודשים|#בעוד {num} חודשים",
- "#in {num}s": "one#בעוד שנ׳|two#בעוד שתי שנ׳|many#בעוד {num} שנ׳|#בעוד {num} שנ׳",
- "#in {num}w": "one#בעוד שב׳|two#בעוד שבועיים|many#בעוד {num} שב׳|#בעוד {num} שב׳",
- "#in {num}y": "one#בעוד שנה|two#בעוד שנתיים|many#בעוד {num} שנה|#בעוד {num} שנים",
- "#{num} ms": "one#{num} ms|two#{num} ms|many#{num} ms|#{num} ms",
- "#{num}d": "one#י׳|two#{num} י׳|many#{num} י׳|#{num} י׳",
- "#{num}d ago": "one#אתמול|two#לפני יומיים|many#לפני {num} ימים|#לפני {num} ימים",
- "#{num}h": "one#שעה {num}|two#{num} שע׳|many#{num} שע׳|#{num} שע׳",
- "#{num}h ago": "one#לפני שעה|two#לפני שעתיים|many#לפני {num} שע׳|#לפני {num} שע׳",
- "#{num}mi ago": "one#לפני דקה|two#לפני {num} דק׳|many#לפני {num} דק׳|#לפני {num} דק׳",
- "#{num}mo ago": "one#לפני חודש|two#לפני חודשיים|many#לפני {num} חודשים|#לפני {num} חודשים",
- "#{num}s": "one#שניה|two#שתי שנ׳|many#{num} שנ׳|#{num} שנ׳",
- "#{num}s ago": "one#לפני שנ׳|two#לפני שתי שנ׳|many#לפני {num} שנ׳|#לפני {num} שנ׳",
- "#{num}w": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
- "#{num}w ago": "one#לפני שב׳|two#לפני שבועיים|many#לפני {num} שב׳|#לפני {num} שב׳",
- "#{num}y": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
- "#{num}y ago": "one#לפני שנה|two#לפני שנתיים|many#לפני {num} שנה|#לפני {num} שנים",
"1#1 day ago|#{num} days ago": "one#לפני יום {num}|two#לפני יומיים|many#לפני {num} ימים|#לפני {num} ימים",
"1#1 day|#{num} days": "one#יום {num}|two#יומיים|many#{num} יום|#{num} ימים",
"1#1 dy ago|#{num} dys ago": "one#לפני יום {num}|two#לפני יומיים|many#לפני {num} ימים|#לפני {num} ימים",
@@ -29,19 +9,19 @@
"1#1 hr|#{num} hrs": "one#שעה|two#שעתיים|many#{num} שע׳|#{num} שע׳",
"1#1 millisecond|#{num} milliseconds": "one#אלפית שנייה {num}|two#{num} אלפיות שנייה|many#{num} אלפיות שנייה|#{num} אלפיות שנייה",
"1#1 min ago|#{num} min ago": "one#לפני דקה|two#לפני שתי דקות|many#לפני {num} דקות|#לפני {num} דקות",
- "1#1 minute ago|#{num} minutes ago": "one#לפני דקה|two#לפני שתי דקות|many#לפני {num} דקות|#לפני {num} דקות",
- "1#1 minute|#{num} minutes": "one#דקה|two#שתי דקות|many#{num} דקות|#{num} דקות",
"1#1 min|#{num} min": "one#דקה|two#שתי דק׳|many#{num} דק׳|#{num} דק׳",
"1#1 mi|#{num} min": "one#דקה|two#שתי דק׳|many#{num} דק׳|#{num} דק׳",
+ "1#1 minute ago|#{num} minutes ago": "one#לפני דקה|two#לפני שתי דקות|many#לפני {num} דקות|#לפני {num} דקות",
+ "1#1 minute|#{num} minutes": "one#דקה|two#שתי דקות|many#{num} דקות|#{num} דקות",
"1#1 mon ago|#{num} mons ago": "one#לפני חודש|two#לפני חודשיים|many#לפני {num} חודשים|#לפני {num} חודשים",
+ "1#1 mon|#{num} mons": "one#חודש|two#חודשיים|many#{num} ח׳|#{num} ח׳",
"1#1 month ago|#{num} months ago": "one#לפני חודש|two#לפני חודשיים|many#לפני {num} חודשים|#לפני {num} חודשים",
"1#1 month|#{num} months": "one#חודש|two#חודשיים|many#{num} חודשים|#{num} חודשים",
- "1#1 mon|#{num} mons": "one#חודש|two#חודשיים|many#{num} ח׳|#{num} ח׳",
"1#1 mo|#{num} mos": "one#ח׳ {num}|two#{num} ח׳|many#{num} ח׳|#{num} ח׳",
"1#1 sec ago|#{num} sec ago": "one#לפני שנייה|two#לפני שתי שניות|many#לפני {num} שניות|#לפני {num} שניות",
+ "1#1 sec|#{num} sec": "one#שנ׳|two#שתי שנ׳|many#{num} שנ׳|#{num} שנ׳",
"1#1 second ago|#{num} seconds ago": "one#לפני שנייה|two#לפני שתי שניות|many#לפני {num} שניות|#לפני {num} שניות",
"1#1 second|#{num} seconds": "one#שניה|two#שתי שניות|many#{num} שניות|#{num} שניות",
- "1#1 sec|#{num} sec": "one#שנ׳|two#שתי שנ׳|many#{num} שנ׳|#{num} שנ׳",
"1#1 se|#{num} sec": "one#שניה|two#שתי שנ׳|many#{num} שנ׳|#{num} שנ׳",
"1#1 week ago|#{num} weeks ago": "one#לפני שבוע|two#לפני שבועיים|many#לפני {num} שבועות|#לפני {num} שבועות",
"1#1 week|#{num} weeks": "one#שבוע|two#שבועיים|many#{num} שבועות|#{num} שבועות",
@@ -55,16 +35,20 @@
"1#in 1 dy|#in {num} dys": "one#בעוד יום {num}|two#בעוד יומיים|many#בעוד {num} ימים|#בעוד {num} ימים",
"1#in 1 hour|#in {num} hours": "one#בעוד שעה|two#בעוד שעתיים|many#בעוד {num} שעות|#בעוד {num} שעות",
"1#in 1 hr|#in {num} hrs": "one#בעוד שעה|two#בעוד שעתיים|many#בעוד {num} שעות|#בעוד {num} שעות",
- "1#in 1 minute|#in {num} minutes": "one#בעוד דקה|two#בעוד שתי דקות|many#בעוד {num} דקות|#בעוד {num} דקות",
"1#in 1 min|#in {num} min": "one#בעוד דקה|two#בעוד שתי דקות|many#בעוד {num} דקות|#בעוד {num} דקות",
- "1#in 1 month|#in {num} months": "one#בעוד חודש|two#בעוד חודשיים|many#בעוד {num} חודשים|#בעוד {num} חודשים",
+ "1#in 1 minute|#in {num} minutes": "one#בעוד דקה|two#בעוד שתי דקות|many#בעוד {num} דקות|#בעוד {num} דקות",
"1#in 1 mon|#in {num} mons": "one#בעוד חודש|two#בעוד חודשיים|many#בעוד {num} חודשים|#בעוד {num} חודשים",
- "1#in 1 second|#in {num} seconds": "one#בעוד שנייה|two#בעוד שתי שניות|many#בעוד {num} שניות|#בעוד {num} שניות",
+ "1#in 1 month|#in {num} months": "one#בעוד חודש|two#בעוד חודשיים|many#בעוד {num} חודשים|#בעוד {num} חודשים",
"1#in 1 sec|#in {num} sec": "one#בעוד שנייה|two#בעוד שתי שניות|many#בעוד {num} שניות|#בעוד {num} שניות",
+ "1#in 1 second|#in {num} seconds": "one#בעוד שנייה|two#בעוד שתי שניות|many#בעוד {num} שניות|#בעוד {num} שניות",
"1#in 1 week|#in {num} weeks": "one#בעוד שבוע|two#בעוד שבועיים|many#בעוד {num} שבועות|#בעוד {num} שבועות",
"1#in 1 wk|#in {num} wks": "one#בעוד שבוע|two#בעוד שבועיים|many#בעוד {num} שבועות|#בעוד {num} שבועות",
"1#in 1 year|#in {num} years": "one#בעוד שנה|two#בעוד שנתיים|many#בעוד {num} שנה|#בעוד {num} שנים",
"1#in 1 yr|#in {num} yrs": "one#בעוד שנה|two#בעוד שנתיים|many#בעוד {num} שנה|#בעוד {num} שנים",
+ "a0-hebrew": "לפנה״צ",
+ "a0": "לפנה״צ",
+ "a1-hebrew": "אחה״צ",
+ "a1": "אחה״צ",
"B0": "חצות",
"B1": "לפנה״צ",
"B2": "לפנות בוקר",
@@ -74,95 +58,197 @@
"B6": "אחר הצהריים",
"B7": "בערב",
"B8": "בלילה",
+ "durationLongDays": "one#יום|two#יומיים|many#{num} ימ׳|#{num} ימ׳",
+ "durationMediumHours": "one#שעה {num}|two#{num} שע׳|many#{num} שע׳|#{num} שע׳",
+ "durationMediumMillis": "one#{num} ms|two#{num} ms|many#{num} ms|#{num} ms",
+ "durationMediumWeeks": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
+ "durationMediumYears": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
+ "durationShortMillis": "one#{num} ms|two#{num} ms|many#{num} ms|#{num} ms",
+ "durationShortMinutes": "one#דקה|two#שתי דק׳|many#{num} דק׳|#{num} דק׳",
+ "durationShortMonths": "one#ח׳ {num}|two#{num} ח׳|many#{num} ח׳|#{num} ח׳",
+ "E0-hebrew": "א׳",
"E0": "א׳",
+ "E1-hebrew": "ב׳",
"E1": "ב׳",
+ "E2-hebrew": "ג׳",
"E2": "ג׳",
+ "E3-hebrew": "ד׳",
"E3": "ד׳",
+ "E4-hebrew": "ה׳",
"E4": "ה׳",
+ "E5-hebrew": "ו׳",
"E5": "ו׳",
+ "E6-hebrew": "ש׳",
"E6": "ש׳",
+ "EE0-hebrew": "א׳",
"EE0": "א׳",
+ "EE1-hebrew": "ב׳",
"EE1": "ב׳",
+ "EE2-hebrew": "ג׳",
"EE2": "ג׳",
+ "EE3-hebrew": "ד׳",
"EE3": "ד׳",
+ "EE4-hebrew": "ה׳",
"EE4": "ה׳",
+ "EE5-hebrew": "ו׳",
"EE5": "ו׳",
+ "EE6-hebrew": "ש׳",
"EE6": "ש׳",
+ "EEE0-hebrew": "יום א׳",
"EEE0": "יום א׳",
+ "EEE1-hebrew": "יום ב׳",
"EEE1": "יום ב׳",
+ "EEE2-hebrew": "יום ג׳",
"EEE2": "יום ג׳",
+ "EEE3-hebrew": "יום ד׳",
"EEE3": "יום ד׳",
+ "EEE4-hebrew": "יום ה׳",
"EEE4": "יום ה׳",
+ "EEE5-hebrew": "יום ו׳",
"EEE5": "יום ו׳",
+ "EEE6-hebrew": "שבת",
"EEE6": "שבת",
+ "EEEE0-hebrew": "יום ראשון",
"EEEE0": "יום ראשון",
+ "EEEE1-hebrew": "יום שני",
"EEEE1": "יום שני",
+ "EEEE2-hebrew": "יום שלישי",
"EEEE2": "יום שלישי",
+ "EEEE3-hebrew": "יום רביעי",
"EEEE3": "יום רביעי",
+ "EEEE4-hebrew": "יום חמישי",
"EEEE4": "יום חמישי",
+ "EEEE5-hebrew": "יום שישי",
"EEEE5": "יום שישי",
+ "EEEE6-hebrew": "יום שבת",
"EEEE6": "יום שבת",
- "MMM1": "ינו׳",
+ "finalSeparatorFull": " ו-",
+ "finalSeparatorLong": ", ",
+ "finalSeparatorMedium": ", ",
+ "finalSeparatorShort": " ",
+ "#in {num}d": "one#מחר|two#בעוד יומיים|many#בעוד {num} ימים|#בעוד {num} ימים",
+ "#in {num}h": "one#בעוד שעה|two#בעוד שעתיים|many#בעוד {num} שע׳|#בעוד {num} שע׳",
+ "#in {num}mi": "one#בעוד דקה|two#בעוד שתי דק׳|many#בעוד {num} דק׳|#בעוד {num} דק׳",
+ "#in {num}mo": "one#בעוד חודש|two#בעוד חודשיים|many#בעוד {num} חודשים|#בעוד {num} חודשים",
+ "#in {num}s": "one#בעוד שנ׳|two#בעוד שתי שנ׳|many#בעוד {num} שנ׳|#בעוד {num} שנ׳",
+ "#in {num}w": "one#בעוד שב׳|two#בעוד שבועיים|many#בעוד {num} שב׳|#בעוד {num} שב׳",
+ "#in {num}y": "one#בעוד שנה|two#בעוד שנתיים|many#בעוד {num} שנה|#בעוד {num} שנים",
+ "MMM10-hebrew": "טבת",
"MMM10": "אוק׳",
+ "MMM11-hebrew": "שבט",
"MMM11": "נוב׳",
+ "MMM12-hebrew": "אדר",
+ "MMM12-leap-hebrew": "אדר א׳",
"MMM12": "דצמ׳",
+ "MMM13-leap-hebrew": "אדר ב׳",
+ "MMM1-hebrew": "ניסן",
+ "MMM1": "ינו׳",
+ "MMM2-hebrew": "אייר",
"MMM2": "פבר׳",
+ "MMM3-hebrew": "סיון",
"MMM3": "מרץ",
+ "MMM4-hebrew": "תמוז",
"MMM4": "אפר׳",
+ "MMM5-hebrew": "אב",
"MMM5": "מאי",
+ "MMM6-hebrew": "אלול",
"MMM6": "יוני",
+ "MMM7-hebrew": "תשרי",
"MMM7": "יולי",
+ "MMM8-hebrew": "חשון",
"MMM8": "אוג׳",
+ "MMM9-hebrew": "כסלו",
"MMM9": "ספט׳",
- "MMMM1": "ינואר",
+ "MMMM10-hebrew": "טבת",
"MMMM10": "אוקטובר",
+ "MMMM11-hebrew": "שבט",
"MMMM11": "נובמבר",
+ "MMMM12-hebrew": "אדר",
+ "MMMM12-leap-hebrew": "אדר א׳",
"MMMM12": "דצמבר",
+ "MMMM13-leap-hebrew": "אדר ב׳",
+ "MMMM1-hebrew": "ניסן",
+ "MMMM1": "ינואר",
+ "MMMM2-hebrew": "אייר",
"MMMM2": "פברואר",
+ "MMMM3-hebrew": "סיוון",
"MMMM3": "מרץ",
+ "MMMM4-hebrew": "תמוז",
"MMMM4": "אפריל",
+ "MMMM5-hebrew": "אב",
"MMMM5": "מאי",
+ "MMMM6-hebrew": "אלול",
"MMMM6": "יוני",
+ "MMMM7-hebrew": "תשרי",
"MMMM7": "יולי",
+ "MMMM8-hebrew": "חשוון",
"MMMM8": "אוגוסט",
+ "MMMM9-hebrew": "כסלו",
"MMMM9": "ספטמבר",
- "N1": "י",
+ "N10-hebrew": "ט",
"N10": "א",
+ "N11-hebrew": "ש",
"N11": "נ",
+ "N12-hebrew": "א",
+ "N12-leap-hebrew": "א",
"N12": "ד",
+ "N13-leap-hebrew": "א",
+ "N1-hebrew": "נ",
+ "N1": "י",
+ "N2-hebrew": "א",
"N2": "פ",
+ "N3-hebrew": "ס",
"N3": "מ",
+ "N4-hebrew": "ת",
"N4": "א",
+ "N5-hebrew": "א",
"N5": "מ",
+ "N6-hebrew": "א",
"N6": "י",
+ "N7-hebrew": "ת",
"N7": "י",
+ "N8-hebrew": "ח",
"N8": "א",
+ "N9-hebrew": "כ",
"N9": "ס",
- "NN1": "ינ",
+ "NN10-hebrew": "טב",
"NN10": "או",
+ "NN11-hebrew": "שב",
"NN11": "נו",
+ "NN12-hebrew": "אד",
+ "NN12-leap-hebrew": "אד",
"NN12": "דצ",
+ "NN13-leap-hebrew": "אד",
+ "NN1-hebrew": "ני",
+ "NN1": "ינ",
+ "NN2-hebrew": "אי",
"NN2": "פב",
+ "NN3-hebrew": "סי",
"NN3": "מר",
+ "NN4-hebrew": "תמ",
"NN4": "אפ",
+ "NN5-hebrew": "אב",
"NN5": "מא",
+ "NN6-hebrew": "אל",
"NN6": "יו",
+ "NN7-hebrew": "תש",
"NN7": "יו",
+ "NN8-hebrew": "חש",
"NN8": "או",
+ "NN9-hebrew": "כס",
"NN9": "ספ",
- "a0": "לפנה״צ",
- "a1": "אחה״צ",
- "durationLongDays": "one#יום|two#יומיים|many#{num} ימ׳|#{num} ימ׳",
- "durationMediumHours": "one#שעה {num}|two#{num} שע׳|many#{num} שע׳|#{num} שע׳",
- "durationMediumMillis": "one#{num} ms|two#{num} ms|many#{num} ms|#{num} ms",
- "durationMediumWeeks": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
- "durationMediumYears": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
- "durationShortMillis": "one#{num} ms|two#{num} ms|many#{num} ms|#{num} ms",
- "durationShortMinutes": "one#דקה|two#שתי דק׳|many#{num} דק׳|#{num} דק׳",
- "durationShortMonths": "one#ח׳ {num}|two#{num} ח׳|many#{num} ח׳|#{num} ח׳",
- "finalSeparatorFull": " ו-",
- "finalSeparatorLong": ", ",
- "finalSeparatorMedium": ", ",
- "finalSeparatorShort": " ",
+ "#{num}d ago": "one#אתמול|two#לפני יומיים|many#לפני {num} ימים|#לפני {num} ימים",
+ "#{num}d": "one#י׳|two#{num} י׳|many#{num} י׳|#{num} י׳",
+ "#{num}h ago": "one#לפני שעה|two#לפני שעתיים|many#לפני {num} שע׳|#לפני {num} שע׳",
+ "#{num}h": "one#שעה {num}|two#{num} שע׳|many#{num} שע׳|#{num} שע׳",
+ "#{num}mi ago": "one#לפני דקה|two#לפני {num} דק׳|many#לפני {num} דק׳|#לפני {num} דק׳",
+ "#{num}mo ago": "one#לפני חודש|two#לפני חודשיים|many#לפני {num} חודשים|#לפני {num} חודשים",
+ "#{num} ms": "one#{num} ms|two#{num} ms|many#{num} ms|#{num} ms",
+ "#{num}s ago": "one#לפני שנ׳|two#לפני שתי שנ׳|many#לפני {num} שנ׳|#לפני {num} שנ׳",
+ "#{num}s": "one#שניה|two#שתי שנ׳|many#{num} שנ׳|#{num} שנ׳",
+ "#{num}w ago": "one#לפני שב׳|two#לפני שבועיים|many#לפני {num} שב׳|#לפני {num} שב׳",
+ "#{num}w": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
+ "#{num}y ago": "one#לפני שנה|two#לפני שנתיים|many#לפני {num} שנה|#לפני {num} שנים",
+ "#{num}y": "one#ש′ {num}|two#{num} ש′|many#{num} ש′|#{num} ש′",
"separatorMedium": ", "
-}
\ No newline at end of file
+}
diff --git a/js/data/locale/hi/dateres.json b/js/data/locale/hi/dateres.json
new file mode 100644
index 0000000000..d6f4075947
--- /dev/null
+++ b/js/data/locale/hi/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "पूर्वाह्न/अपराह्न",
+ "Day": "दिन",
+ "Day of Year": "वर्ष का दिन",
+ "Era": "युग",
+ "Hour": "घंटा",
+ "Minute": "मिनट",
+ "Month": "माह",
+ "Second": "सेकंड",
+ "Time Zone": "समय क्षेत्र",
+ "Week": "सप्ताह",
+ "Week of Month": "माह का सप्ताह",
+ "Year": "वर्ष",
+ "D": "द",
+ "DD": "दद",
+ "YY": "वव",
+ "YYYY": "वववव",
+ "M": "म",
+ "MM": "मम",
+ "H": "घ",
+ "HH": "घघ",
+ "mm": "मम",
+ "ss": "सस"
+}
\ No newline at end of file
diff --git a/js/data/locale/hr/dateres.json b/js/data/locale/hr/dateres.json
new file mode 100644
index 0000000000..e7db6b8aae
--- /dev/null
+++ b/js/data/locale/hr/dateres.json
@@ -0,0 +1,17 @@
+{
+ "Day": "dan",
+ "Day of Year": "dan u godini",
+ "Era": "era",
+ "Hour": "sat",
+ "Minute": "minuta",
+ "Month": "mjesec",
+ "Second": "sekunda",
+ "Time Zone": "vremenska zona",
+ "Week": "tjedan",
+ "Week of Month": "tjedan u mjesecu",
+ "Year": "godina",
+ "YY": "GG",
+ "YYYY": "GGGG",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/hsb/dateres.json b/js/data/locale/hsb/dateres.json
new file mode 100644
index 0000000000..ac3ee959b9
--- /dev/null
+++ b/js/data/locale/hsb/dateres.json
@@ -0,0 +1,14 @@
+{
+ "AM/PM": "połojca dnja",
+ "Day": "dźeń",
+ "Era": "doba",
+ "Hour": "hodźina",
+ "Minute": "minuta",
+ "Month": "měsac",
+ "Second": "sekunda",
+ "Time Zone": "časowe pasmo",
+ "Week": "tydźeń",
+ "Year": "lěto",
+ "YY": "LL",
+ "YYYY": "LLLL"
+}
\ No newline at end of file
diff --git a/js/data/locale/hu/dateres.json b/js/data/locale/hu/dateres.json
new file mode 100644
index 0000000000..54f209ed7b
--- /dev/null
+++ b/js/data/locale/hu/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "napszak",
+ "Day": "nap",
+ "Day of Year": "év napja",
+ "Era": "éra",
+ "Hour": "óra",
+ "Minute": "perc",
+ "Month": "hónap",
+ "Second": "másodperc",
+ "Time Zone": "időzóna",
+ "Week": "hét",
+ "Week of Month": "hónap hete",
+ "Year": "év",
+ "D": "N",
+ "DD": "NN",
+ "YY": "ÉV",
+ "YYYY": "ÉV",
+ "M": "H",
+ "MM": "HH",
+ "H": "Ó",
+ "HH": "ÓÓ",
+ "mm": "pp",
+ "ss": "mm"
+}
\ No newline at end of file
diff --git a/js/data/locale/hy/dateres.json b/js/data/locale/hy/dateres.json
new file mode 100644
index 0000000000..c192ee8666
--- /dev/null
+++ b/js/data/locale/hy/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ԿԱ/ԿՀ",
+ "Day": "օր",
+ "Day of Year": "տարվա օր",
+ "Era": "թվարկություն",
+ "Hour": "ժամ",
+ "Minute": "րոպե",
+ "Month": "ամիս",
+ "Second": "վայրկյան",
+ "Time Zone": "ժամային գոտի",
+ "Week": "շաբաթ",
+ "Week of Month": "ամսվա շաբաթ",
+ "Year": "տարի",
+ "D": "ՕՐ",
+ "DD": "ՕՐ",
+ "YY": "ՏՏ",
+ "YYYY": "ՏՏՏՏ",
+ "M": "Ա",
+ "MM": "ԱԱ",
+ "H": "Ժ",
+ "HH": "ԺԺ",
+ "mm": "րր",
+ "ss": "վվ"
+}
\ No newline at end of file
diff --git a/js/data/locale/ia/dateres.json b/js/data/locale/ia/dateres.json
new file mode 100644
index 0000000000..b76dda02f8
--- /dev/null
+++ b/js/data/locale/ia/dateres.json
@@ -0,0 +1,15 @@
+{
+ "Day": "die",
+ "Day of Year": "die del anno",
+ "Era": "era",
+ "Hour": "hora",
+ "Minute": "minuta",
+ "Month": "mense",
+ "Second": "secunda",
+ "Time Zone": "fuso horari",
+ "Week": "septimana",
+ "Week of Month": "septimana del mense",
+ "Year": "anno",
+ "YY": "AA",
+ "YYYY": "AAAA"
+}
\ No newline at end of file
diff --git a/js/data/locale/id/dateres.json b/js/data/locale/id/dateres.json
new file mode 100644
index 0000000000..c8834670f1
--- /dev/null
+++ b/js/data/locale/id/dateres.json
@@ -0,0 +1,21 @@
+{
+ "Day": "Hari",
+ "Day of Year": "Hari dalam Setahun",
+ "Hour": "Jam",
+ "Minute": "Menit",
+ "Month": "Bulan",
+ "Second": "Detik",
+ "Time Zone": "Zona waktu",
+ "Week": "Minggu",
+ "Week of Month": "Minggu",
+ "Year": "Tahun",
+ "D": "H",
+ "DD": "HH",
+ "YY": "TT",
+ "YYYY": "TTTT",
+ "M": "B",
+ "MM": "BB",
+ "H": "J",
+ "HH": "JJ",
+ "ss": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/ig/dateres.json b/js/data/locale/ig/dateres.json
new file mode 100644
index 0000000000..93eeab56bf
--- /dev/null
+++ b/js/data/locale/ig/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "N’ụtụtụ/N’anyasị",
+ "Day": "Ụbọchị",
+ "Era": "Agba",
+ "Hour": "Elekere",
+ "Minute": "Nkeji",
+ "Month": "Ọnwa",
+ "Second": "Nkejinta",
+ "Time Zone": "Mpaghara oge",
+ "Week": "Izu",
+ "Year": "Afọ",
+ "D": "Ụ",
+ "DD": "ỤỤ",
+ "YY": "AA",
+ "YYYY": "AFỌ",
+ "M": "Ọ",
+ "MM": "ỌỌ",
+ "H": "E",
+ "HH": "EE",
+ "mm": "nn",
+ "ss": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/ii/dateres.json b/js/data/locale/ii/dateres.json
new file mode 100644
index 0000000000..8f65ca918b
--- /dev/null
+++ b/js/data/locale/ii/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "ꎸꄑ/ꁯꋒ",
+ "Day": "ꑍ",
+ "Era": "ꃅꋊ",
+ "Hour": "ꄮꈉ",
+ "Minute": "ꃏ",
+ "Month": "ꆪ",
+ "Second": "ꇙ",
+ "Time Zone": "ꃅꄷꄮꈉ",
+ "Week": "ꑭꆏ",
+ "Year": "ꈎ",
+ "D": "ꑍ",
+ "DD": "ꑍ",
+ "YY": "ꈎ",
+ "YYYY": "ꈎ",
+ "M": "ꆪ",
+ "MM": "ꆪ",
+ "H": "ꄮꈉ",
+ "HH": "ꄮꈉ",
+ "mm": "ꃏ",
+ "ss": "ꇙ"
+}
\ No newline at end of file
diff --git a/js/data/locale/is/dateres.json b/js/data/locale/is/dateres.json
new file mode 100644
index 0000000000..1f2a124cd0
--- /dev/null
+++ b/js/data/locale/is/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "f.h./e.h.",
+ "Day": "dagur",
+ "Day of Year": "dagur í ári",
+ "Era": "tímabil",
+ "Hour": "klukkustund",
+ "Minute": "mínúta",
+ "Month": "mánuður",
+ "Second": "sekúnda",
+ "Time Zone": "tímabelti",
+ "Week": "vika",
+ "Week of Month": "vika í mánuði",
+ "Year": "ár",
+ "YY": "ÁR",
+ "YYYY": "ÁR",
+ "H": "K",
+ "HH": "KK"
+}
\ No newline at end of file
diff --git a/js/data/locale/it/dateres.json b/js/data/locale/it/dateres.json
new file mode 100644
index 0000000000..171c419217
--- /dev/null
+++ b/js/data/locale/it/dateres.json
@@ -0,0 +1,19 @@
+{
+ "Day": "giorno",
+ "Day of Year": "giorno dell’anno",
+ "Era": "era",
+ "Hour": "ora",
+ "Minute": "minuto",
+ "Month": "mese",
+ "Second": "secondo",
+ "Time Zone": "fuso orario",
+ "Week": "settimana",
+ "Week of Month": "settimana del mese",
+ "Year": "anno",
+ "D": "G",
+ "DD": "GG",
+ "YY": "AA",
+ "YYYY": "AAAA",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/ja/dateres.json b/js/data/locale/ja/dateres.json
new file mode 100644
index 0000000000..1a99412a60
--- /dev/null
+++ b/js/data/locale/ja/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "午前/午後",
+ "Day": "日",
+ "Day of Year": "年の通日",
+ "Era": "時代",
+ "Hour": "時",
+ "Minute": "分",
+ "Month": "月",
+ "Second": "秒",
+ "Time Zone": "タイムゾーン",
+ "Week": "週",
+ "Week of Month": "月の週番号",
+ "Year": "年",
+ "D": "日",
+ "DD": "日",
+ "YY": "年",
+ "YYYY": "年",
+ "M": "月",
+ "MM": "月",
+ "H": "時",
+ "HH": "時",
+ "mm": "分",
+ "ss": "秒"
+}
\ No newline at end of file
diff --git a/js/data/locale/jgo/dateres.json b/js/data/locale/jgo/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/jgo/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/jmc/dateres.json b/js/data/locale/jmc/dateres.json
new file mode 100644
index 0000000000..1afbc89c0f
--- /dev/null
+++ b/js/data/locale/jmc/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Mfiri o siku",
+ "Day": "Mfiri",
+ "Era": "Kacha",
+ "Hour": "Saa",
+ "Minute": "Dakyika",
+ "Month": "Mori",
+ "Second": "Sekunde",
+ "Time Zone": "Mfiri o saa",
+ "Week": "Wiikyi",
+ "Year": "Maka",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/jv/dateres.json b/js/data/locale/jv/dateres.json
new file mode 100644
index 0000000000..61045792fd
--- /dev/null
+++ b/js/data/locale/jv/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "isuk/wengi",
+ "Day": "dino",
+ "Era": "era",
+ "Hour": "jam",
+ "Minute": "menit",
+ "Month": "sasi",
+ "Second": "detik",
+ "Time Zone": "zona wektu",
+ "Week": "pekan",
+ "Year": "taun",
+ "YY": "TT",
+ "YYYY": "TTTT",
+ "M": "S",
+ "MM": "SS",
+ "H": "J",
+ "HH": "JJ",
+ "ss": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/ka/dateres.json b/js/data/locale/ka/dateres.json
new file mode 100644
index 0000000000..c6aa160601
--- /dev/null
+++ b/js/data/locale/ka/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "დღის ნახევარი",
+ "Day": "დღე",
+ "Day of Year": "წლის დღე",
+ "Era": "ეპოქა",
+ "Hour": "საათი",
+ "Minute": "წუთი",
+ "Month": "თვე",
+ "Second": "წამი",
+ "Time Zone": "დროის სარტყელი",
+ "Week": "კვირა",
+ "Week of Month": "თვის კვირა",
+ "Year": "წელი",
+ "D": "Დ",
+ "DD": "ᲓᲓ",
+ "YY": "ᲬᲬ",
+ "YYYY": "ᲬᲬᲬᲬ",
+ "M": "Თ",
+ "MM": "ᲗᲗ",
+ "H": "Ს",
+ "HH": "ᲡᲡ",
+ "mm": "წწ",
+ "ss": "წწ"
+}
\ No newline at end of file
diff --git a/js/data/locale/kab/dateres.json b/js/data/locale/kab/dateres.json
new file mode 100644
index 0000000000..9e90c2b4ad
--- /dev/null
+++ b/js/data/locale/kab/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "n tufat / n tmeddit",
+ "Day": "Ass",
+ "Era": "Tallit",
+ "Hour": "Tamert",
+ "Minute": "Tamrect",
+ "Month": "Aggur",
+ "Second": "Tasint",
+ "Time Zone": "Aseglem asergan",
+ "Week": "Ddurt",
+ "Year": "Aseggas",
+ "D": "A",
+ "DD": "AA",
+ "YY": "AA",
+ "YYYY": "AAAA",
+ "M": "A",
+ "MM": "AA",
+ "H": "T",
+ "HH": "TT",
+ "mm": "tt",
+ "ss": "tt"
+}
\ No newline at end of file
diff --git a/js/data/locale/kam/dateres.json b/js/data/locale/kam/dateres.json
new file mode 100644
index 0000000000..1558139ce2
--- /dev/null
+++ b/js/data/locale/kam/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Ĩyakwakya/Ĩyawĩoo",
+ "Day": "Mũthenya",
+ "Era": "Ĩvinda",
+ "Hour": "Saa",
+ "Minute": "Ndatĩka",
+ "Month": "Mwai",
+ "Second": "sekondi",
+ "Time Zone": "Kĩsio kya ĩsaa",
+ "Week": "Kyumwa",
+ "Year": "Mwaka",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/kde/dateres.json b/js/data/locale/kde/dateres.json
new file mode 100644
index 0000000000..8060e37ab8
--- /dev/null
+++ b/js/data/locale/kde/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Muhi/Chilo",
+ "Day": "Lihiku",
+ "Era": "Mahiku",
+ "Hour": "Saa",
+ "Minute": "Dakika",
+ "Month": "Mwedi",
+ "Second": "Sekunde",
+ "Time Zone": "Npanda wa muda",
+ "Week": "Lijuma",
+ "Year": "Mwaka",
+ "D": "L",
+ "DD": "LL",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/kea/dateres.json b/js/data/locale/kea/dateres.json
new file mode 100644
index 0000000000..e952c01958
--- /dev/null
+++ b/js/data/locale/kea/dateres.json
@@ -0,0 +1,15 @@
+{
+ "AM/PM": "am/pm",
+ "Day": "Dia",
+ "Hour": "Ora",
+ "Minute": "Minutu",
+ "Month": "Mes",
+ "Second": "Sigundu",
+ "Time Zone": "Ora lokal",
+ "Week": "Simana",
+ "Year": "Anu",
+ "YY": "AA",
+ "YYYY": "ANU",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/khq/dateres.json b/js/data/locale/khq/dateres.json
new file mode 100644
index 0000000000..dcab771b88
--- /dev/null
+++ b/js/data/locale/khq/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Adduha wala Aluula",
+ "Day": "Jaari",
+ "Era": "Zaman",
+ "Hour": "Guuru",
+ "Minute": "Miniti",
+ "Month": "Handu",
+ "Second": "Miti",
+ "Time Zone": "Leerazuu",
+ "Week": "Hebu",
+ "Year": "Jiiri",
+ "D": "J",
+ "DD": "JJ",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "M": "H",
+ "MM": "HH",
+ "H": "G",
+ "HH": "GG",
+ "ss": "mm"
+}
\ No newline at end of file
diff --git a/js/data/locale/ki/dateres.json b/js/data/locale/ki/dateres.json
new file mode 100644
index 0000000000..69649aa70e
--- /dev/null
+++ b/js/data/locale/ki/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Mũthenya",
+ "Era": "Kĩhinda",
+ "Hour": "Ithaa",
+ "Minute": "Ndagĩka",
+ "Month": "Mweri",
+ "Second": "Sekunde",
+ "Time Zone": "Mũcooro wa mathaa",
+ "Week": "Kiumia",
+ "Year": "Mwaka",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "I",
+ "HH": "II",
+ "mm": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/kk/dateres.json b/js/data/locale/kk/dateres.json
new file mode 100644
index 0000000000..ff6d099fea
--- /dev/null
+++ b/js/data/locale/kk/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "АМ/РМ",
+ "Day": "күн",
+ "Day of Year": "жылдағы күн",
+ "Era": "дәуір",
+ "Hour": "сағат",
+ "Minute": "минут",
+ "Month": "ай",
+ "Second": "секунд",
+ "Time Zone": "уақыт белдеуі",
+ "Week": "апта",
+ "Week of Month": "айдағы апта",
+ "Year": "жыл",
+ "D": "К",
+ "DD": "КК",
+ "YY": "ЖЖ",
+ "YYYY": "ЖЫЛ",
+ "M": "АЙ",
+ "MM": "АЙ",
+ "H": "С",
+ "HH": "СС",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/kkj/dateres.json b/js/data/locale/kkj/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/kkj/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/kl/dateres.json b/js/data/locale/kl/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/kl/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/kln/dateres.json b/js/data/locale/kln/dateres.json
new file mode 100644
index 0000000000..6ec4d662aa
--- /dev/null
+++ b/js/data/locale/kln/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "BE/KE",
+ "Day": "Betut",
+ "Era": "Ibinta",
+ "Hour": "Sait",
+ "Minute": "Minitit",
+ "Month": "Arawet",
+ "Second": "Sekondit",
+ "Time Zone": "Saitab sonit",
+ "Week": "Wikit",
+ "Year": "Kenyit",
+ "D": "B",
+ "DD": "BB",
+ "YY": "KK",
+ "YYYY": "KKKK",
+ "M": "A",
+ "MM": "AA",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/km/dateres.json b/js/data/locale/km/dateres.json
new file mode 100644
index 0000000000..72fd52dd51
--- /dev/null
+++ b/js/data/locale/km/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ព្រឹក/ល្ងាច",
+ "Day": "ថ្ងៃ",
+ "Day of Year": "ថ្ងៃនៃឆ្នាំ",
+ "Era": "សករាជ",
+ "Hour": "ម៉ោង",
+ "Minute": "នាទី",
+ "Month": "ខែ",
+ "Second": "វិនាទី",
+ "Time Zone": "ល្វែងម៉ោង",
+ "Week": "សប្ដាហ៍",
+ "Week of Month": "សប្ដាហ៍នៃខែ",
+ "Year": "ឆ្នាំ",
+ "D": "ថ",
+ "DD": "ថថ",
+ "YY": "ឆឆ",
+ "YYYY": "ឆឆឆឆ",
+ "M": "ខែ",
+ "MM": "ខែ",
+ "H": "ម",
+ "HH": "មម",
+ "mm": "នន",
+ "ss": "វវ"
+}
\ No newline at end of file
diff --git a/js/data/locale/kn/dateres.json b/js/data/locale/kn/dateres.json
new file mode 100644
index 0000000000..c7830c6f14
--- /dev/null
+++ b/js/data/locale/kn/dateres.json
@@ -0,0 +1,23 @@
+{
+ "Day": "ದಿನ",
+ "Day of Year": "ವರ್ಷದ ದಿನ",
+ "Era": "ಯುಗ",
+ "Hour": "ಗಂಟೆ",
+ "Minute": "ನಿಮಿಷ",
+ "Month": "ತಿಂಗಳು",
+ "Second": "ಸೆಕೆಂಡ್",
+ "Time Zone": "ಸಮಯ ವಲಯ",
+ "Week": "ವಾರ",
+ "Week of Month": "ತಿಂಗಳ ವಾರ",
+ "Year": "ವರ್ಷ",
+ "D": "ದ",
+ "DD": "ದದ",
+ "YY": "ವವ",
+ "YYYY": "ವವವವ",
+ "M": "ತ",
+ "MM": "ತತ",
+ "H": "ಗ",
+ "HH": "ಗಗ",
+ "mm": "ನನ",
+ "ss": "ಸಸ"
+}
\ No newline at end of file
diff --git a/js/data/locale/ko/dateres.json b/js/data/locale/ko/dateres.json
new file mode 100644
index 0000000000..43b69263e6
--- /dev/null
+++ b/js/data/locale/ko/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "오전/오후",
+ "Day": "일",
+ "Day of Year": "년의 일",
+ "Era": "연호",
+ "Hour": "시",
+ "Minute": "분",
+ "Month": "월",
+ "Second": "초",
+ "Time Zone": "시간대",
+ "Week": "주",
+ "Week of Month": "월의 주",
+ "Year": "년",
+ "D": "일",
+ "DD": "일",
+ "YY": "년",
+ "YYYY": "년",
+ "M": "월",
+ "MM": "월",
+ "H": "시",
+ "HH": "시",
+ "mm": "분",
+ "ss": "초"
+}
\ No newline at end of file
diff --git a/js/data/locale/kok/dateres.json b/js/data/locale/kok/dateres.json
new file mode 100644
index 0000000000..7f58c576da
--- /dev/null
+++ b/js/data/locale/kok/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "दिसाचोकालावधी",
+ "Day": "दीस",
+ "Day of Year": "वर्साचो दीस",
+ "Era": "शक",
+ "Hour": "वर",
+ "Minute": "मिनीट",
+ "Month": "म्हयनो",
+ "Second": "सेकंद",
+ "Time Zone": "झोन",
+ "Week": "सप्तक",
+ "Week of Month": "म्हयन्यातलो सप्तक",
+ "Year": "वर्स",
+ "D": "द",
+ "DD": "दद",
+ "YY": "वव",
+ "YYYY": "वववव",
+ "M": "म",
+ "MM": "मम",
+ "H": "वर",
+ "HH": "वर",
+ "mm": "मम",
+ "ss": "सस"
+}
\ No newline at end of file
diff --git a/js/data/locale/ks/dateres.json b/js/data/locale/ks/dateres.json
new file mode 100644
index 0000000000..a7f7d428d9
--- /dev/null
+++ b/js/data/locale/ks/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "صبح/رات",
+ "Day": "دۄہ",
+ "Era": "دور",
+ "Hour": "گٲنٛٹہٕ",
+ "Minute": "مِنَٹ",
+ "Month": "رٮ۪تھ",
+ "Second": "سٮ۪کَنڑ",
+ "Time Zone": "زون",
+ "Week": "ہفتہٕ",
+ "Year": "ؤری",
+ "D": "دۄہ",
+ "DD": "دۄہ",
+ "YY": "ؤری",
+ "YYYY": "ؤری",
+ "M": "رٮ۪تھ",
+ "MM": "رٮ۪تھ",
+ "H": "گٲنٛٹہٕ",
+ "HH": "گٲنٛٹہٕ",
+ "mm": "مِنَٹ",
+ "ss": "سٮ۪کَنڑ"
+}
\ No newline at end of file
diff --git a/js/data/locale/ksb/dateres.json b/js/data/locale/ksb/dateres.json
new file mode 100644
index 0000000000..7f0820fc9a
--- /dev/null
+++ b/js/data/locale/ksb/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Namshii",
+ "Day": "Siku",
+ "Era": "Mishi",
+ "Hour": "Saa",
+ "Minute": "Dakika",
+ "Month": "Ng’ezi",
+ "Second": "Sekunde",
+ "Time Zone": "Majila",
+ "Week": "Niki",
+ "Year": "Ng’waka",
+ "D": "S",
+ "DD": "SS",
+ "YY": "NN",
+ "YYYY": "NNNN",
+ "M": "N",
+ "MM": "NN",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/ksf/dateres.json b/js/data/locale/ksf/dateres.json
new file mode 100644
index 0000000000..0f7d895e5e
--- /dev/null
+++ b/js/data/locale/ksf/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Sárúwá / Cɛɛ́nko",
+ "Day": "Ŋwós",
+ "Era": "Byámɛɛn",
+ "Hour": "Cámɛɛn",
+ "Minute": "Mǝnít",
+ "Month": "Ŋwíí",
+ "Second": "Háu",
+ "Time Zone": "Wáas",
+ "Week": "Sɔ́ndǝ",
+ "Year": "Bǝk",
+ "D": "Ŋ",
+ "DD": "ŊŊ",
+ "YY": "BB",
+ "YYYY": "BƎK",
+ "M": "Ŋ",
+ "MM": "ŊŊ",
+ "H": "C",
+ "HH": "CC",
+ "ss": "hh"
+}
\ No newline at end of file
diff --git a/js/data/locale/ksh/dateres.json b/js/data/locale/ksh/dateres.json
new file mode 100644
index 0000000000..01e3c4682c
--- /dev/null
+++ b/js/data/locale/ksh/dateres.json
@@ -0,0 +1,16 @@
+{
+ "AM/PM": "Daachteil",
+ "Day": "Daach",
+ "Era": "Ähra",
+ "Hour": "Schtund",
+ "Minute": "Menutt",
+ "Month": "Mohnd",
+ "Second": "Sekond",
+ "Time Zone": "Zickzohn",
+ "Week": "Woch",
+ "Year": "Johr",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/ku/dateres.json b/js/data/locale/ku/dateres.json
new file mode 100644
index 0000000000..b0f680cc67
--- /dev/null
+++ b/js/data/locale/ku/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "roj",
+ "Era": "serdem",
+ "Hour": "saet",
+ "Minute": "deqîqe",
+ "Month": "meh",
+ "Second": "saniye",
+ "Time Zone": "Zone",
+ "Week": "hefte",
+ "Year": "sal",
+ "D": "R",
+ "DD": "RR",
+ "YY": "SS",
+ "YYYY": "SAL",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/kw/dateres.json b/js/data/locale/kw/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/kw/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/ky/dateres.json b/js/data/locale/ky/dateres.json
new file mode 100644
index 0000000000..a311e20e8e
--- /dev/null
+++ b/js/data/locale/ky/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ТЧ/ТК",
+ "Day": "күн",
+ "Day of Year": "жылдын күнү",
+ "Era": "заман",
+ "Hour": "саат",
+ "Minute": "мүнөт",
+ "Month": "ай",
+ "Second": "секунд",
+ "Time Zone": "убакыт алкагы",
+ "Week": "апта",
+ "Week of Month": "айдын жумасы",
+ "Year": "жыл",
+ "D": "КҮН",
+ "DD": "КҮН",
+ "YY": "ЖЫЛ",
+ "YYYY": "ЖЫЛ",
+ "M": "АЙ",
+ "MM": "АЙ",
+ "H": "СААТ",
+ "HH": "СААТ",
+ "mm": "мүнөт",
+ "ss": "секунд"
+}
\ No newline at end of file
diff --git a/js/data/locale/lag/dateres.json b/js/data/locale/lag/dateres.json
new file mode 100644
index 0000000000..9bc76432fd
--- /dev/null
+++ b/js/data/locale/lag/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Mpɨɨndɨ ja sikʉ",
+ "Day": "Sikʉ",
+ "Era": "Mpɨɨndɨ",
+ "Hour": "Sáa",
+ "Minute": "Dakíka",
+ "Month": "Mweéri",
+ "Second": "Sekúunde",
+ "Time Zone": "Mpɨɨndɨ ja mɨɨtʉ",
+ "Week": "Wíiki",
+ "Year": "Mwaáka",
+ "D": "S",
+ "DD": "SS",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/lb/dateres.json b/js/data/locale/lb/dateres.json
new file mode 100644
index 0000000000..b7e8ae6546
--- /dev/null
+++ b/js/data/locale/lb/dateres.json
@@ -0,0 +1,16 @@
+{
+ "AM/PM": "Dageshallschent",
+ "Day": "Dag",
+ "Era": "Epoch",
+ "Hour": "Stonn",
+ "Minute": "Minutt",
+ "Month": "Mount",
+ "Second": "Sekonn",
+ "Time Zone": "Zäitzon",
+ "Week": "Woch",
+ "Year": "Joer",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/lg/dateres.json b/js/data/locale/lg/dateres.json
new file mode 100644
index 0000000000..46cc947110
--- /dev/null
+++ b/js/data/locale/lg/dateres.json
@@ -0,0 +1,19 @@
+{
+ "Day": "Lunaku",
+ "Era": "Mulembe",
+ "Hour": "Saawa",
+ "Minute": "Dakiika",
+ "Month": "Mwezi",
+ "Second": "Kasikonda",
+ "Time Zone": "Ssaawa za:",
+ "Week": "Sabbiiti",
+ "Year": "Mwaka",
+ "D": "L",
+ "DD": "LL",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd",
+ "ss": "kk"
+}
\ No newline at end of file
diff --git a/js/data/locale/lkt/dateres.json b/js/data/locale/lkt/dateres.json
new file mode 100644
index 0000000000..c2a059ecc0
--- /dev/null
+++ b/js/data/locale/lkt/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Aŋpétu",
+ "Hour": "Owápȟe",
+ "Minute": "Owápȟe oȟʼáŋkȟo",
+ "Month": "Wí",
+ "Second": "Okpí",
+ "Time Zone": "Zone",
+ "Week": "Okó",
+ "Year": "Ómakȟa",
+ "D": "A",
+ "DD": "AA",
+ "YY": "ÓÓ",
+ "YYYY": "ÓÓÓÓ",
+ "M": "WÍ",
+ "MM": "WÍ",
+ "H": "O",
+ "HH": "OO",
+ "mm": "oo",
+ "ss": "oo"
+}
\ No newline at end of file
diff --git a/js/data/locale/ln/dateres.json b/js/data/locale/ln/dateres.json
new file mode 100644
index 0000000000..d495b7358b
--- /dev/null
+++ b/js/data/locale/ln/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "Eleko ya mokɔlɔ",
+ "Day": "Mokɔlɔ",
+ "Era": "Ntángo",
+ "Hour": "Ngonga",
+ "Minute": "Monúti",
+ "Month": "Sánzá",
+ "Second": "Sɛkɔ́ndɛ",
+ "Time Zone": "Ntáká ya ngonga",
+ "Week": "Pɔ́sɔ",
+ "Year": "Mobú",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "M": "S",
+ "MM": "SS",
+ "H": "N",
+ "HH": "NN"
+}
\ No newline at end of file
diff --git a/js/data/locale/lo/dateres.json b/js/data/locale/lo/dateres.json
new file mode 100644
index 0000000000..3e9efee338
--- /dev/null
+++ b/js/data/locale/lo/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ກ່ອນທ່ຽງ/ຫຼັງທ່ຽງ",
+ "Day": "ມື້",
+ "Day of Year": "ມື້ຂອງປີ",
+ "Era": "ສະໄໝ",
+ "Hour": "ຊົ່ວໂມງ",
+ "Minute": "ນາທີ",
+ "Month": "ເດືອນ",
+ "Second": "ວິນາທີ",
+ "Time Zone": "ເຂດເວລາ",
+ "Week": "ອາທິດ",
+ "Week of Month": "ອາທິດຂອງເດືອນ",
+ "Year": "ປີ",
+ "D": "ມ",
+ "DD": "ມມ",
+ "YY": "ປີ",
+ "YYYY": "ປີ",
+ "M": "ເ",
+ "MM": "ເເ",
+ "H": "ຊ",
+ "HH": "ຊຊ",
+ "mm": "ນນ",
+ "ss": "ວວ"
+}
\ No newline at end of file
diff --git a/js/data/locale/lrc/dateres.json b/js/data/locale/lrc/dateres.json
new file mode 100644
index 0000000000..56518aaf52
--- /dev/null
+++ b/js/data/locale/lrc/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "گات روٙز",
+ "Day": "روٙز",
+ "Era": "سأرۉ",
+ "Hour": "ساأت",
+ "Minute": "دئیقە",
+ "Month": "ما",
+ "Second": "ثانیە",
+ "Time Zone": "راساگە",
+ "Week": "ھأفتە",
+ "Year": "سال",
+ "D": "ر",
+ "DD": "رر",
+ "YY": "سس",
+ "YYYY": "سال",
+ "M": "ما",
+ "MM": "ما",
+ "H": "س",
+ "HH": "سس",
+ "mm": "دد",
+ "ss": "ثث"
+}
\ No newline at end of file
diff --git a/js/data/locale/lt/dateres.json b/js/data/locale/lt/dateres.json
new file mode 100644
index 0000000000..3b596ca83d
--- /dev/null
+++ b/js/data/locale/lt/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "iki pietų / po pietų",
+ "Day": "diena",
+ "Day of Year": "metų diena",
+ "Era": "era",
+ "Hour": "valanda",
+ "Minute": "minutė",
+ "Month": "mėnuo",
+ "Second": "sekundė",
+ "Time Zone": "laiko juosta",
+ "Week": "savaitė",
+ "Week of Month": "mėnesio savaitė",
+ "Year": "metai",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "V",
+ "HH": "VV"
+}
\ No newline at end of file
diff --git a/js/data/locale/lu/dateres.json b/js/data/locale/lu/dateres.json
new file mode 100644
index 0000000000..dfc18f7c35
--- /dev/null
+++ b/js/data/locale/lu/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "Mutantshi wa diba",
+ "Day": "Dituku",
+ "Era": "Tshipungu",
+ "Hour": "Diba",
+ "Minute": "Kasunsu",
+ "Month": "Ngondo",
+ "Second": "Kasunsukusu",
+ "Time Zone": "Nzeepu",
+ "Week": "Lubingu",
+ "Year": "Tshidimu",
+ "YY": "TT",
+ "YYYY": "TTTT",
+ "M": "N",
+ "MM": "NN",
+ "H": "D",
+ "HH": "DD",
+ "mm": "kk",
+ "ss": "kk"
+}
\ No newline at end of file
diff --git a/js/data/locale/luo/dateres.json b/js/data/locale/luo/dateres.json
new file mode 100644
index 0000000000..497f73d756
--- /dev/null
+++ b/js/data/locale/luo/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "odieochieng’/otieno",
+ "Day": "chieng’",
+ "Era": "ndalo",
+ "Hour": "saa",
+ "Minute": "dakika",
+ "Month": "dwe",
+ "Second": "nyiriri mar saa",
+ "Time Zone": "kar saa",
+ "Week": "juma",
+ "Year": "higa",
+ "D": "C",
+ "DD": "CC",
+ "YY": "HH",
+ "YYYY": "HHHH",
+ "M": "D",
+ "MM": "DD",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd",
+ "ss": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/luy/dateres.json b/js/data/locale/luy/dateres.json
new file mode 100644
index 0000000000..805b317f11
--- /dev/null
+++ b/js/data/locale/luy/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Vuche/Vwira",
+ "Day": "Ridiku",
+ "Era": "Rimenya",
+ "Hour": "Isaa",
+ "Minute": "Idagika",
+ "Month": "Mweri",
+ "Second": "Sekunde",
+ "Time Zone": "Havundu",
+ "Week": "Risiza",
+ "Year": "Muhiga",
+ "D": "R",
+ "DD": "RR",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "I",
+ "HH": "II",
+ "mm": "ii"
+}
\ No newline at end of file
diff --git a/js/data/locale/lv/dateres.json b/js/data/locale/lv/dateres.json
new file mode 100644
index 0000000000..a365d97d2c
--- /dev/null
+++ b/js/data/locale/lv/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "priekšpusdienā/pēcpusdienā",
+ "Day": "diena",
+ "Day of Year": "gada diena",
+ "Era": "ēra",
+ "Hour": "stundas",
+ "Minute": "minūtes",
+ "Month": "mēnesis",
+ "Second": "sekundes",
+ "Time Zone": "laika josla",
+ "Week": "nedēļa",
+ "Week of Month": "mēneša nedēļa",
+ "Year": "gads",
+ "YY": "GG",
+ "YYYY": "GGGG",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/mas/dateres.json b/js/data/locale/mas/dateres.json
new file mode 100644
index 0000000000..eeff29d2b1
--- /dev/null
+++ b/js/data/locale/mas/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Ɛnkakɛnyá/Ɛndámâ",
+ "Day": "Ɛnkɔlɔ́ŋ",
+ "Era": "Ɛnkátá",
+ "Hour": "Ɛ́sáâ",
+ "Minute": "Oldákikaè",
+ "Month": "Ɔlápà",
+ "Second": "Sekunde",
+ "Time Zone": "Ɛ́sáâ o inkuapí",
+ "Week": "Ewíkî",
+ "Year": "Ɔlárì",
+ "D": "Ɛ",
+ "DD": "ƐƐ",
+ "YY": "ƆƆ",
+ "YYYY": "ƆƆƆƆ",
+ "M": "Ɔ",
+ "MM": "ƆƆ",
+ "H": "Ɛ",
+ "HH": "ƐƐ",
+ "mm": "oo"
+}
\ No newline at end of file
diff --git a/js/data/locale/mer/dateres.json b/js/data/locale/mer/dateres.json
new file mode 100644
index 0000000000..386f5faab0
--- /dev/null
+++ b/js/data/locale/mer/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Mũthenya",
+ "Day": "Ntukũ",
+ "Era": "Ĩgita",
+ "Hour": "Ĩthaa",
+ "Minute": "Ndagika",
+ "Month": "Mweri",
+ "Second": "Sekondi",
+ "Time Zone": "Gũntũ kwa thaa",
+ "Week": "Kiumia",
+ "Year": "Mwaka",
+ "D": "N",
+ "DD": "NN",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "Ĩ",
+ "HH": "ĨĨ",
+ "mm": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/mfe/dateres.json b/js/data/locale/mfe/dateres.json
new file mode 100644
index 0000000000..eaecba268c
--- /dev/null
+++ b/js/data/locale/mfe/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "Peryod dan lazourne",
+ "Day": "Zour",
+ "Era": "Lepok",
+ "Hour": "Ler",
+ "Minute": "Minit",
+ "Month": "Mwa",
+ "Second": "Segonn",
+ "Time Zone": "Peryod letan",
+ "Week": "Semenn",
+ "Year": "Lane",
+ "D": "Z",
+ "DD": "ZZ",
+ "YY": "LL",
+ "YYYY": "LLLL",
+ "H": "L",
+ "HH": "LL"
+}
\ No newline at end of file
diff --git a/js/data/locale/mg/dateres.json b/js/data/locale/mg/dateres.json
new file mode 100644
index 0000000000..72a1fe6cfa
--- /dev/null
+++ b/js/data/locale/mg/dateres.json
@@ -0,0 +1,18 @@
+{
+ "Day": "Andro",
+ "Hour": "Ora",
+ "Minute": "Minitra",
+ "Month": "Volana",
+ "Second": "Segondra",
+ "Time Zone": "Zone",
+ "Week": "Herinandro",
+ "Year": "Taona",
+ "D": "A",
+ "DD": "AA",
+ "YY": "TT",
+ "YYYY": "TTTT",
+ "M": "V",
+ "MM": "VV",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/mgh/dateres.json b/js/data/locale/mgh/dateres.json
new file mode 100644
index 0000000000..f2f7e07c65
--- /dev/null
+++ b/js/data/locale/mgh/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "nihuku",
+ "Era": "kal’lai",
+ "Hour": "isaa",
+ "Minute": "idakika",
+ "Month": "mweri",
+ "Second": "isekunde",
+ "Time Zone": "Zone",
+ "Week": "iwiki mocha",
+ "Year": "yaka",
+ "D": "N",
+ "DD": "NN",
+ "H": "I",
+ "HH": "II",
+ "mm": "ii",
+ "ss": "ii"
+}
\ No newline at end of file
diff --git a/js/data/locale/mgo/dateres.json b/js/data/locale/mgo/dateres.json
new file mode 100644
index 0000000000..2baa1c2e6f
--- /dev/null
+++ b/js/data/locale/mgo/dateres.json
@@ -0,0 +1,14 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "anəg",
+ "Month": "iməg",
+ "Time Zone": "Zone",
+ "Week": "nkap",
+ "Year": "fituʼ",
+ "D": "A",
+ "DD": "AA",
+ "YY": "FF",
+ "YYYY": "FFFF",
+ "M": "I",
+ "MM": "II"
+}
\ No newline at end of file
diff --git a/js/data/locale/mi/dateres.json b/js/data/locale/mi/dateres.json
new file mode 100644
index 0000000000..2018493790
--- /dev/null
+++ b/js/data/locale/mi/dateres.json
@@ -0,0 +1,16 @@
+{
+ "Day": "rā",
+ "Era": "wā",
+ "Hour": "hāora",
+ "Minute": "meneti",
+ "Month": "marama",
+ "Second": "hēkona",
+ "Time Zone": "rohe wā",
+ "Week": "wiki",
+ "Year": "tau",
+ "D": "RĀ",
+ "DD": "RĀ",
+ "YY": "TT",
+ "YYYY": "TAU",
+ "ss": "hh"
+}
\ No newline at end of file
diff --git a/js/data/locale/mk/dateres.json b/js/data/locale/mk/dateres.json
new file mode 100644
index 0000000000..d7f291044e
--- /dev/null
+++ b/js/data/locale/mk/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "претпладне/попладне",
+ "Day": "ден",
+ "Day of Year": "ден од годината",
+ "Era": "ера",
+ "Hour": "час",
+ "Minute": "минута",
+ "Month": "месец",
+ "Second": "секунда",
+ "Time Zone": "временска зона",
+ "Week": "седмица",
+ "Week of Month": "седмица од месецот",
+ "Year": "година",
+ "D": "Д",
+ "DD": "ДД",
+ "YY": "ГГ",
+ "YYYY": "ГГГГ",
+ "M": "М",
+ "MM": "ММ",
+ "H": "Ч",
+ "HH": "ЧЧ",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/ml/dateres.json b/js/data/locale/ml/dateres.json
new file mode 100644
index 0000000000..595da3a061
--- /dev/null
+++ b/js/data/locale/ml/dateres.json
@@ -0,0 +1,23 @@
+{
+ "Day": "ദിവസം",
+ "Day of Year": "വർഷത്തിലെ ദിവസം",
+ "Era": "കാലഘട്ടം",
+ "Hour": "മണിക്കൂർ",
+ "Minute": "മിനിറ്റ്",
+ "Month": "മാസം",
+ "Second": "സെക്കൻഡ്",
+ "Time Zone": "സമയ മേഖല",
+ "Week": "ആഴ്ച",
+ "Week of Month": "മാസത്തിലെ ആഴ്ച",
+ "Year": "വർഷം",
+ "D": "ദ",
+ "DD": "ദദ",
+ "YY": "വവ",
+ "YYYY": "വവവവ",
+ "M": "മ",
+ "MM": "മമ",
+ "H": "മ",
+ "HH": "മമ",
+ "mm": "മമ",
+ "ss": "സസ"
+}
\ No newline at end of file
diff --git a/js/data/locale/mn/dateres.json b/js/data/locale/mn/dateres.json
new file mode 100644
index 0000000000..61f33357d9
--- /dev/null
+++ b/js/data/locale/mn/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ү.ө./ү.х.",
+ "Day": "өдөр",
+ "Day of Year": "жилийн хоног",
+ "Era": "эрин",
+ "Hour": "цаг",
+ "Minute": "минут",
+ "Month": "сар",
+ "Second": "секунд",
+ "Time Zone": "цагийн бүс",
+ "Week": "долоо хоног",
+ "Week of Month": "сарын долоо хоног",
+ "Year": "жил",
+ "D": "Ө",
+ "DD": "ӨӨ",
+ "YY": "ЖЖ",
+ "YYYY": "ЖИЛ",
+ "M": "С",
+ "MM": "СС",
+ "H": "Ц",
+ "HH": "ЦЦ",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/mr/dateres.json b/js/data/locale/mr/dateres.json
new file mode 100644
index 0000000000..a2dbc594ea
--- /dev/null
+++ b/js/data/locale/mr/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "[म.पू./म.उ.]",
+ "Day": "दिवस",
+ "Day of Year": "वर्षातील दिवस",
+ "Era": "युग",
+ "Hour": "तास",
+ "Minute": "मिनिट",
+ "Month": "महिना",
+ "Second": "सेकंद",
+ "Time Zone": "वेळ क्षेत्र",
+ "Week": "आठवडा",
+ "Week of Month": "महिन्याचा आठवडा",
+ "Year": "वर्ष",
+ "D": "द",
+ "DD": "दद",
+ "YY": "वव",
+ "YYYY": "वववव",
+ "M": "म",
+ "MM": "मम",
+ "H": "त",
+ "HH": "तत",
+ "mm": "मम",
+ "ss": "सस"
+}
\ No newline at end of file
diff --git a/js/data/locale/ms/dateres.json b/js/data/locale/ms/dateres.json
new file mode 100644
index 0000000000..a7736b7f65
--- /dev/null
+++ b/js/data/locale/ms/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "PG/PTG",
+ "Day": "Hari",
+ "Hour": "Jam",
+ "Minute": "Minit",
+ "Month": "Bulan",
+ "Second": "Saat",
+ "Time Zone": "Zon waktu",
+ "Week": "Minggu",
+ "Year": "Tahun",
+ "D": "H",
+ "DD": "HH",
+ "YY": "TT",
+ "YYYY": "TTTT",
+ "M": "B",
+ "MM": "BB",
+ "H": "J",
+ "HH": "JJ"
+}
\ No newline at end of file
diff --git a/js/data/locale/mt/dateres.json b/js/data/locale/mt/dateres.json
new file mode 100644
index 0000000000..6929387056
--- /dev/null
+++ b/js/data/locale/mt/dateres.json
@@ -0,0 +1,20 @@
+{
+ "Day": "jum",
+ "Day of Year": "jum tas-sena",
+ "Hour": "siegħa",
+ "Minute": "minuta",
+ "Month": "xahar",
+ "Second": "sekonda",
+ "Time Zone": "żona tal-ħin",
+ "Week": "ġimgħa",
+ "Week of Month": "ġimgħa tax-xahar",
+ "Year": "Sena",
+ "D": "J",
+ "DD": "JJ",
+ "YY": "SS",
+ "YYYY": "SSSS",
+ "M": "X",
+ "MM": "XX",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/mua/dateres.json b/js/data/locale/mua/dateres.json
new file mode 100644
index 0000000000..c2985c7484
--- /dev/null
+++ b/js/data/locale/mua/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Zah’nane/ Comme",
+ "Era": "Syii ma tãa",
+ "Hour": "Cok comme",
+ "Minute": "Cok comme ma laŋne",
+ "Month": "Fĩi",
+ "Second": "Cok comme ma laŋ tǝ biŋ",
+ "Time Zone": "Waŋ cok comme",
+ "Week": "Luma",
+ "Year": "Syii",
+ "D": "Z",
+ "DD": "ZZ",
+ "YY": "SS",
+ "YYYY": "SSSS",
+ "M": "F",
+ "MM": "FF",
+ "H": "C",
+ "HH": "CC",
+ "mm": "cc",
+ "ss": "cc"
+}
\ No newline at end of file
diff --git a/js/data/locale/my/dateres.json b/js/data/locale/my/dateres.json
new file mode 100644
index 0000000000..8309a84bff
--- /dev/null
+++ b/js/data/locale/my/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "နံနက်/ညနေ",
+ "Day": "ရက်",
+ "Day of Year": "တစ်နှစ်အတွင်း ရက်ရေတွက်ပုံ",
+ "Era": "ခေတ်",
+ "Hour": "နာရီ",
+ "Minute": "မိနစ်",
+ "Month": "လ",
+ "Second": "စက္ကန့်",
+ "Time Zone": "ဇုန်",
+ "Week": "ပတ်",
+ "Week of Month": "တစ်လအတွင်းရှိသီတင်းပတ်",
+ "Year": "နှစ်",
+ "D": "ရ",
+ "DD": "ရရ",
+ "YY": "နန",
+ "YYYY": "နနနန",
+ "M": "လ",
+ "MM": "လ",
+ "H": "န",
+ "HH": "နန",
+ "mm": "မမ",
+ "ss": "စစ"
+}
\ No newline at end of file
diff --git a/js/data/locale/mzn/dateres.json b/js/data/locale/mzn/dateres.json
new file mode 100644
index 0000000000..ba58adda66
--- /dev/null
+++ b/js/data/locale/mzn/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "صواحی/ظُر",
+ "Day": "روز",
+ "Era": "تقویم",
+ "Hour": "ساعِت",
+ "Minute": "دقیقه",
+ "Month": "ماه",
+ "Second": "ثانیه",
+ "Time Zone": "زمونی منقطه",
+ "Week": "هفته",
+ "Year": "سال",
+ "D": "ر",
+ "DD": "رر",
+ "YY": "سس",
+ "YYYY": "سال",
+ "M": "م",
+ "MM": "مم",
+ "H": "س",
+ "HH": "سس",
+ "mm": "دد",
+ "ss": "ثث"
+}
\ No newline at end of file
diff --git a/js/data/locale/naq/dateres.json b/js/data/locale/naq/dateres.json
new file mode 100644
index 0000000000..09a34d611b
--- /dev/null
+++ b/js/data/locale/naq/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "ǁgoas/ǃuis",
+ "Day": "Tsees",
+ "Era": "ǁAeǃgâs",
+ "Hour": "Iiri",
+ "Minute": "Haib",
+ "Month": "ǁKhâb",
+ "Second": "ǀGâub",
+ "Time Zone": "ǁAeb ǀharib",
+ "Week": "Wekheb",
+ "Year": "Kurib",
+ "D": "T",
+ "DD": "TT",
+ "YY": "KK",
+ "YYYY": "KKKK",
+ "M": "ǁ",
+ "MM": "ǁǁ",
+ "H": "I",
+ "HH": "II",
+ "mm": "hh",
+ "ss": "ǀǀ"
+}
\ No newline at end of file
diff --git a/js/data/locale/nb/dateres.json b/js/data/locale/nb/dateres.json
new file mode 100644
index 0000000000..4ede5de535
--- /dev/null
+++ b/js/data/locale/nb/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "a.m./p.m.",
+ "Day": "dag",
+ "Day of Year": "dag i året",
+ "Era": "tidsalder",
+ "Hour": "time",
+ "Minute": "minutt",
+ "Month": "måned",
+ "Second": "sekund",
+ "Time Zone": "tidssone",
+ "Week": "uke",
+ "Week of Month": "uke i måneden",
+ "Year": "år",
+ "YY": "ÅR",
+ "YYYY": "ÅR",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/nd/dateres.json b/js/data/locale/nd/dateres.json
new file mode 100644
index 0000000000..7e5f9c580f
--- /dev/null
+++ b/js/data/locale/nd/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Ilanga",
+ "Hour": "Ihola",
+ "Minute": "Umuzuzu",
+ "Month": "Inyangacale",
+ "Second": "Isekendi",
+ "Time Zone": "Isikhathi",
+ "Week": "Iviki",
+ "Year": "Umnyaka",
+ "D": "I",
+ "DD": "II",
+ "YY": "UU",
+ "YYYY": "UUUU",
+ "M": "I",
+ "MM": "II",
+ "H": "I",
+ "HH": "II",
+ "mm": "uu",
+ "ss": "ii"
+}
\ No newline at end of file
diff --git a/js/data/locale/nds/dateres.json b/js/data/locale/nds/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/nds/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/ne/dateres.json b/js/data/locale/ne/dateres.json
new file mode 100644
index 0000000000..328d6fa30b
--- /dev/null
+++ b/js/data/locale/ne/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "पूर्वाह्न / अपराह्न",
+ "Day": "बार",
+ "Day of Year": "वर्षको बार",
+ "Era": "काल",
+ "Hour": "घण्टा",
+ "Minute": "मिनेट",
+ "Month": "महिना",
+ "Second": "सेकेन्ड",
+ "Time Zone": "क्षेत्र",
+ "Week": "हप्ता",
+ "Week of Month": "महिनाको हप्ता",
+ "Year": "वर्ष",
+ "D": "ब",
+ "DD": "बब",
+ "YY": "वव",
+ "YYYY": "वववव",
+ "M": "म",
+ "MM": "मम",
+ "H": "घ",
+ "HH": "घघ",
+ "mm": "मम",
+ "ss": "सस"
+}
\ No newline at end of file
diff --git a/js/data/locale/nl/dateres.json b/js/data/locale/nl/dateres.json
new file mode 100644
index 0000000000..b32a68c6a3
--- /dev/null
+++ b/js/data/locale/nl/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "a.m./p.m.",
+ "Day": "dag",
+ "Day of Year": "dag van het jaar",
+ "Era": "tijdperk",
+ "Hour": "uur",
+ "Minute": "minuut",
+ "Month": "maand",
+ "Second": "seconde",
+ "Time Zone": "tijdzone",
+ "Week": "week",
+ "Week of Month": "week van de maand",
+ "Year": "jaar",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "U",
+ "HH": "UU"
+}
\ No newline at end of file
diff --git a/js/data/locale/nmg/dateres.json b/js/data/locale/nmg/dateres.json
new file mode 100644
index 0000000000..c1a7c76a50
--- /dev/null
+++ b/js/data/locale/nmg/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Máná, Muó, Kugú, Bvul",
+ "Day": "Duö",
+ "Era": "Pīl/Lahlɛ̄",
+ "Hour": "Wulā",
+ "Minute": "Mpálâ",
+ "Month": "Ngwɛn",
+ "Second": "Nyiɛl",
+ "Time Zone": "Nkɛ̌l wulā",
+ "Week": "Sɔ́ndɔ",
+ "Year": "Mbvu",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "M": "N",
+ "MM": "NN",
+ "H": "W",
+ "HH": "WW",
+ "ss": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/nn/dateres.json b/js/data/locale/nn/dateres.json
new file mode 100644
index 0000000000..35da8fb22f
--- /dev/null
+++ b/js/data/locale/nn/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "f.m./e.m.",
+ "Day": "dag",
+ "Day of Year": "dag i året",
+ "Era": "tidsalder",
+ "Hour": "time",
+ "Minute": "minutt",
+ "Month": "månad",
+ "Second": "sekund",
+ "Time Zone": "tidssone",
+ "Week": "veke",
+ "Week of Month": "veke i månaden",
+ "Year": "år",
+ "YY": "ÅR",
+ "YYYY": "ÅR",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/nnh/dateres.json b/js/data/locale/nnh/dateres.json
new file mode 100644
index 0000000000..0e89cfef3a
--- /dev/null
+++ b/js/data/locale/nnh/dateres.json
@@ -0,0 +1,14 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "lyɛ̌ʼ",
+ "Era": "tsɔ́ fʉ̀ʼ",
+ "Hour": "fʉ̀ʼ nèm",
+ "Time Zone": "Zone",
+ "Year": "ngùʼ",
+ "D": "L",
+ "DD": "LL",
+ "YY": "NN",
+ "YYYY": "NNNN",
+ "H": "F",
+ "HH": "FF"
+}
\ No newline at end of file
diff --git a/js/data/locale/nus/dateres.json b/js/data/locale/nus/dateres.json
new file mode 100644
index 0000000000..f1721e5a18
--- /dev/null
+++ b/js/data/locale/nus/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Cäŋ",
+ "Era": "Gua̱a̱th Ruëc",
+ "Hour": "Thaak",
+ "Minute": "Minit",
+ "Month": "Pay",
+ "Second": "Thɛkɛni",
+ "Time Zone": "Zone",
+ "Week": "Jiɔk",
+ "Year": "Ruɔ̱n",
+ "D": "C",
+ "DD": "CC",
+ "YY": "RR",
+ "YYYY": "RRRR",
+ "M": "P",
+ "MM": "PP",
+ "H": "T",
+ "HH": "TT",
+ "ss": "tt"
+}
\ No newline at end of file
diff --git a/js/data/locale/nyn/dateres.json b/js/data/locale/nyn/dateres.json
new file mode 100644
index 0000000000..73bab9790b
--- /dev/null
+++ b/js/data/locale/nyn/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Nyomushana/nyekiro",
+ "Day": "Eizooba",
+ "Era": "Obunaku",
+ "Hour": "Shaaha",
+ "Minute": "Edakiika",
+ "Month": "Omwezi",
+ "Second": "Obucweka/Esekendi",
+ "Time Zone": "Eshaaha za",
+ "Week": "Esande",
+ "Year": "Omwaka",
+ "D": "E",
+ "DD": "EE",
+ "YY": "OO",
+ "YYYY": "OOOO",
+ "M": "O",
+ "MM": "OO",
+ "H": "S",
+ "HH": "SS",
+ "mm": "ee",
+ "ss": "oo"
+}
\ No newline at end of file
diff --git a/js/data/locale/om/dateres.json b/js/data/locale/om/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/om/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/or/dateres.json b/js/data/locale/or/dateres.json
new file mode 100644
index 0000000000..13275ee0df
--- /dev/null
+++ b/js/data/locale/or/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ପୂର୍ବାହ୍ନ/ଅପରାହ୍ନ",
+ "Day": "ଦିନ",
+ "Day of Year": "ବର୍ଷର ଦିନ",
+ "Era": "ଯୁଗ",
+ "Hour": "ଘଣ୍ଟା",
+ "Minute": "ମିନିଟ୍",
+ "Month": "ମାସ",
+ "Second": "ସେକେଣ୍ଡ୍",
+ "Time Zone": "ସମୟ କ୍ଷେତ୍ର",
+ "Week": "ସପ୍ତାହ",
+ "Week of Month": "ମାସର ସପ୍ତାହ",
+ "Year": "ବର୍ଷ",
+ "D": "ଦ",
+ "DD": "ଦଦ",
+ "YY": "ବବ",
+ "YYYY": "ବବବବ",
+ "M": "ମ",
+ "MM": "ମମ",
+ "H": "ଘ",
+ "HH": "ଘଘ",
+ "mm": "ମମ",
+ "ss": "ସସ"
+}
\ No newline at end of file
diff --git a/js/data/locale/os/dateres.json b/js/data/locale/os/dateres.json
new file mode 100644
index 0000000000..e613a049d2
--- /dev/null
+++ b/js/data/locale/os/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Боны период",
+ "Day": "Бон",
+ "Era": "Дуг",
+ "Hour": "Сахат",
+ "Minute": "Минут",
+ "Month": "Мӕй",
+ "Second": "Секунд",
+ "Time Zone": "Рӕстӕджы зонӕ",
+ "Week": "Къуыри",
+ "Year": "Аз",
+ "D": "Б",
+ "DD": "ББ",
+ "YY": "АЗ",
+ "YYYY": "АЗ",
+ "M": "М",
+ "MM": "ММ",
+ "H": "С",
+ "HH": "СС",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/pa/Arab/dateres.json b/js/data/locale/pa/Arab/dateres.json
new file mode 100644
index 0000000000..5cfce7cc1c
--- /dev/null
+++ b/js/data/locale/pa/Arab/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "دئن",
+ "Day of Year": "Day Of Year",
+ "Hour": "گھنٹا",
+ "Minute": "منٹ",
+ "Month": "مہينا",
+ "Time Zone": "ٹپہ",
+ "Week": "ہفتہ",
+ "Week of Month": "Week Of Month",
+ "Year": "ورھا",
+ "D": "دئن",
+ "DD": "دئن",
+ "YY": "ورھا",
+ "YYYY": "ورھا",
+ "M": "مہينا",
+ "MM": "مہينا",
+ "H": "گھنٹا",
+ "HH": "گھنٹا",
+ "mm": "منٹ"
+}
\ No newline at end of file
diff --git a/js/data/locale/pa/dateres.json b/js/data/locale/pa/dateres.json
new file mode 100644
index 0000000000..731659a4f1
--- /dev/null
+++ b/js/data/locale/pa/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ਪੂ.ਦੁ./ਬਾ.ਦੁ.",
+ "Day": "ਦਿਨ",
+ "Day of Year": "ਸਾਲ ਦਾ ਦਿਨ",
+ "Era": "ਸੰਮਤ",
+ "Hour": "ਘੰਟਾ",
+ "Minute": "ਮਿੰਟ",
+ "Month": "ਮਹੀਨਾ",
+ "Second": "ਸਕਿੰਟ",
+ "Time Zone": "ਇਲਾਕਾਈ ਵੇਲਾ",
+ "Week": "ਹਫ਼ਤਾ",
+ "Week of Month": "ਮਹੀਨੇ ਦਾ ਹਫ਼ਤਾ",
+ "Year": "ਸਾਲ",
+ "D": "ਦ",
+ "DD": "ਦਦ",
+ "YY": "ਸਸ",
+ "YYYY": "ਸਾਲ",
+ "M": "ਮ",
+ "MM": "ਮਮ",
+ "H": "ਘ",
+ "HH": "ਘਘ",
+ "mm": "ਮਮ",
+ "ss": "ਸਸ"
+}
\ No newline at end of file
diff --git a/js/data/locale/pl/dateres.json b/js/data/locale/pl/dateres.json
new file mode 100644
index 0000000000..e89c1860ea
--- /dev/null
+++ b/js/data/locale/pl/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "rano / po południu / wieczorem",
+ "Day": "dzień",
+ "Day of Year": "dzień roku",
+ "Era": "era",
+ "Hour": "godzina",
+ "Minute": "minuta",
+ "Month": "miesiąc",
+ "Second": "sekunda",
+ "Time Zone": "strefa czasowa",
+ "Week": "tydzień",
+ "Week of Month": "tydzień miesiąca",
+ "Year": "rok",
+ "YY": "RR",
+ "YYYY": "ROK",
+ "H": "G",
+ "HH": "GG"
+}
\ No newline at end of file
diff --git a/js/data/locale/prg/dateres.json b/js/data/locale/prg/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/prg/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/ps/dateres.json b/js/data/locale/ps/dateres.json
new file mode 100644
index 0000000000..69d9415934
--- /dev/null
+++ b/js/data/locale/ps/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ورځ شېبه",
+ "Day": "ورځ",
+ "Day of Year": "د کال ورځ",
+ "Era": "پېر",
+ "Hour": "ساعت",
+ "Minute": "دقيقه",
+ "Month": "مياشت",
+ "Second": "ثانيه",
+ "Time Zone": "وخت سيمه",
+ "Week": "اونۍ",
+ "Week of Month": "د مياشتې اونۍ",
+ "Year": "کال",
+ "D": "ورځ",
+ "DD": "ورځ",
+ "YY": "کال",
+ "YYYY": "کال",
+ "M": "مياشت",
+ "MM": "مياشت",
+ "H": "ساعت",
+ "HH": "ساعت",
+ "mm": "دقيقه",
+ "ss": "ثانيه"
+}
\ No newline at end of file
diff --git a/js/data/locale/pt/dateres.json b/js/data/locale/pt/dateres.json
new file mode 100644
index 0000000000..02d819a785
--- /dev/null
+++ b/js/data/locale/pt/dateres.json
@@ -0,0 +1,14 @@
+{
+ "Day": "Dia",
+ "Day of Year": "Dia do ano",
+ "Hour": "Hora",
+ "Minute": "Minuto",
+ "Month": "Mês",
+ "Second": "Segundo",
+ "Time Zone": "Fuso horário",
+ "Week": "Semana",
+ "Week of Month": "Semana do mês",
+ "Year": "Ano",
+ "YY": "AA",
+ "YYYY": "ANO"
+}
\ No newline at end of file
diff --git a/js/data/locale/qu/dateres.json b/js/data/locale/qu/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/qu/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/rm/dateres.json b/js/data/locale/rm/dateres.json
new file mode 100644
index 0000000000..8cf0bcd8f2
--- /dev/null
+++ b/js/data/locale/rm/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "mesadad dal di",
+ "Day": "Tag",
+ "Era": "epoca",
+ "Hour": "ura",
+ "Minute": "minuta",
+ "Month": "mais",
+ "Second": "secunda",
+ "Time Zone": "zona d’urari",
+ "Week": "emna",
+ "Year": "onn",
+ "D": "T",
+ "DD": "TT",
+ "YY": "OO",
+ "YYYY": "ONN",
+ "H": "U",
+ "HH": "UU"
+}
\ No newline at end of file
diff --git a/js/data/locale/rn/dateres.json b/js/data/locale/rn/dateres.json
new file mode 100644
index 0000000000..37006491d2
--- /dev/null
+++ b/js/data/locale/rn/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "M.s/N.s",
+ "Day": "Umusi",
+ "Era": "Igihe",
+ "Hour": "Isaha",
+ "Minute": "Umunota",
+ "Month": "Ukwezi",
+ "Second": "Isegonda",
+ "Time Zone": "Isaha yo mukarere",
+ "Week": "Indwi, Iyinga",
+ "Year": "Umwaka",
+ "D": "U",
+ "DD": "UU",
+ "YY": "UU",
+ "YYYY": "UUUU",
+ "M": "U",
+ "MM": "UU",
+ "H": "I",
+ "HH": "II",
+ "mm": "uu",
+ "ss": "ii"
+}
\ No newline at end of file
diff --git a/js/data/locale/ro/dateres.json b/js/data/locale/ro/dateres.json
new file mode 100644
index 0000000000..c91816f3a2
--- /dev/null
+++ b/js/data/locale/ro/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "a.m/p.m.",
+ "Day": "zi",
+ "Day of Year": "ziua din an",
+ "Era": "eră",
+ "Hour": "oră",
+ "Minute": "minut",
+ "Month": "lună",
+ "Second": "secundă",
+ "Time Zone": "fus orar",
+ "Week": "săptămână",
+ "Week of Month": "săptămâna din lună",
+ "Year": "an",
+ "D": "ZI",
+ "DD": "ZI",
+ "YY": "AN",
+ "YYYY": "AN",
+ "M": "L",
+ "MM": "LL",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/rof/dateres.json b/js/data/locale/rof/dateres.json
new file mode 100644
index 0000000000..4d5c0d7951
--- /dev/null
+++ b/js/data/locale/rof/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Nkwaya",
+ "Day": "Mfiri",
+ "Era": "Kacha",
+ "Hour": "Isaa",
+ "Minute": "Dakika",
+ "Month": "Mweri",
+ "Second": "Sekunde",
+ "Time Zone": "Mfiri o saa",
+ "Week": "Iwiki",
+ "Year": "Muaka",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "I",
+ "HH": "II",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/ru/dateres.json b/js/data/locale/ru/dateres.json
new file mode 100644
index 0000000000..2488086882
--- /dev/null
+++ b/js/data/locale/ru/dateres.json
@@ -0,0 +1,23 @@
+{
+ "Day": "день",
+ "Day of Year": "день года",
+ "Era": "эра",
+ "Hour": "час",
+ "Minute": "минута",
+ "Month": "месяц",
+ "Second": "секунда",
+ "Time Zone": "часовой пояс",
+ "Week": "неделя",
+ "Week of Month": "неделя месяца",
+ "Year": "год",
+ "D": "Д",
+ "DD": "ДД",
+ "YY": "ГГ",
+ "YYYY": "ГОД",
+ "M": "М",
+ "MM": "ММ",
+ "H": "Ч",
+ "HH": "ЧЧ",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/rw/dateres.json b/js/data/locale/rw/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/rw/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/rwk/dateres.json b/js/data/locale/rwk/dateres.json
new file mode 100644
index 0000000000..1afbc89c0f
--- /dev/null
+++ b/js/data/locale/rwk/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Mfiri o siku",
+ "Day": "Mfiri",
+ "Era": "Kacha",
+ "Hour": "Saa",
+ "Minute": "Dakyika",
+ "Month": "Mori",
+ "Second": "Sekunde",
+ "Time Zone": "Mfiri o saa",
+ "Week": "Wiikyi",
+ "Year": "Maka",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/sah/dateres.json b/js/data/locale/sah/dateres.json
new file mode 100644
index 0000000000..30872c4ba0
--- /dev/null
+++ b/js/data/locale/sah/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "ЭИ/ЭК",
+ "Day": "Күн",
+ "Era": "Ээрэ",
+ "Hour": "Чаас",
+ "Minute": "Мүнүүтэ",
+ "Month": "Ый",
+ "Second": "Сөкүүндэ",
+ "Time Zone": "Кэм балаһата",
+ "Week": "Нэдиэлэ",
+ "Year": "Сыл",
+ "D": "К",
+ "DD": "КК",
+ "YY": "СС",
+ "YYYY": "СЫЛ",
+ "M": "ЫЙ",
+ "MM": "ЫЙ",
+ "H": "Ч",
+ "HH": "ЧЧ",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/saq/dateres.json b/js/data/locale/saq/dateres.json
new file mode 100644
index 0000000000..29e96c9270
--- /dev/null
+++ b/js/data/locale/saq/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "TS/TP",
+ "Day": "Mpari",
+ "Era": "Nyamata",
+ "Hour": "Saai",
+ "Minute": "Idakika",
+ "Month": "Lapa",
+ "Second": "Isekondi",
+ "Time Zone": "Majira ya saa",
+ "Week": "Saipa napo",
+ "Year": "Lari",
+ "D": "M",
+ "DD": "MM",
+ "YY": "LL",
+ "YYYY": "LLLL",
+ "M": "L",
+ "MM": "LL",
+ "H": "S",
+ "HH": "SS",
+ "mm": "ii",
+ "ss": "ii"
+}
\ No newline at end of file
diff --git a/js/data/locale/sbp/dateres.json b/js/data/locale/sbp/dateres.json
new file mode 100644
index 0000000000..3e00253481
--- /dev/null
+++ b/js/data/locale/sbp/dateres.json
@@ -0,0 +1,20 @@
+{
+ "AM/PM": "Uluhaavi lwa lusiku",
+ "Day": "Lusiku",
+ "Era": "Uluhaavi lwa",
+ "Hour": "Ilisala",
+ "Minute": "Idakika",
+ "Month": "Mwesi",
+ "Second": "Isekunde",
+ "Time Zone": "Uluhaavi lwa lisaa",
+ "Week": "Ilijuma",
+ "Year": "Mwakha",
+ "D": "L",
+ "DD": "LL",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "I",
+ "HH": "II",
+ "mm": "ii",
+ "ss": "ii"
+}
\ No newline at end of file
diff --git a/js/data/locale/sd/dateres.json b/js/data/locale/sd/dateres.json
new file mode 100644
index 0000000000..b1c9dbe5d8
--- /dev/null
+++ b/js/data/locale/sd/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "صبح/شام",
+ "Day": "ڏينهن",
+ "Day of Year": "سال جو ڏينهن",
+ "Era": "دور",
+ "Hour": "ڪلاڪ",
+ "Minute": "منٽ",
+ "Month": "مهينو",
+ "Second": "سيڪنڊ",
+ "Time Zone": "ٽائيم زون",
+ "Week": "هفتو",
+ "Week of Month": "مهيني جي هفتي",
+ "Year": "سال",
+ "D": "ڏينهن",
+ "DD": "ڏينهن",
+ "YY": "سال",
+ "YYYY": "سال",
+ "M": "مهينو",
+ "MM": "مهينو",
+ "H": "ڪلاڪ",
+ "HH": "ڪلاڪ",
+ "mm": "منٽ",
+ "ss": "سيڪنڊ"
+}
\ No newline at end of file
diff --git a/js/data/locale/se/FI/dateres.json b/js/data/locale/se/FI/dateres.json
new file mode 100644
index 0000000000..0fc067cedc
--- /dev/null
+++ b/js/data/locale/se/FI/dateres.json
@@ -0,0 +1,8 @@
+{
+ "AM/PM": "ib/eb",
+ "Day of Year": "jagi beaivi",
+ "Era": "áigodat",
+ "Week": "vahkku",
+ "Week of Month": "mánu vahkku",
+ "Year": "jahki"
+}
\ No newline at end of file
diff --git a/js/data/locale/se/dateres.json b/js/data/locale/se/dateres.json
new file mode 100644
index 0000000000..e55fd9c218
--- /dev/null
+++ b/js/data/locale/se/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "beaivi ráidodássi",
+ "Day": "beaivi",
+ "Era": "éra",
+ "Hour": "diibmu",
+ "Minute": "minuhtta",
+ "Month": "mánnu",
+ "Second": "sekunda",
+ "Time Zone": "áigeavádat",
+ "Week": "váhkku",
+ "Year": "jáhki",
+ "D": "B",
+ "DD": "BB",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "H": "D",
+ "HH": "DD"
+}
\ No newline at end of file
diff --git a/js/data/locale/seh/dateres.json b/js/data/locale/seh/dateres.json
new file mode 100644
index 0000000000..6bd3aa101d
--- /dev/null
+++ b/js/data/locale/seh/dateres.json
@@ -0,0 +1,14 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Ntsiku",
+ "Hour": "Hora",
+ "Minute": "Minuto",
+ "Month": "Mwezi",
+ "Second": "Segundo",
+ "Time Zone": "Zone",
+ "Year": "Chaka",
+ "D": "N",
+ "DD": "NN",
+ "YY": "CC",
+ "YYYY": "CCCC"
+}
\ No newline at end of file
diff --git a/js/data/locale/ses/dateres.json b/js/data/locale/ses/dateres.json
new file mode 100644
index 0000000000..e70b6a0c45
--- /dev/null
+++ b/js/data/locale/ses/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Adduha wala Aluula",
+ "Day": "Zaari",
+ "Era": "Zaman",
+ "Hour": "Guuru",
+ "Minute": "Miniti",
+ "Month": "Handu",
+ "Second": "Miti",
+ "Time Zone": "Leerazuu",
+ "Week": "Hebu",
+ "Year": "Jiiri",
+ "D": "Z",
+ "DD": "ZZ",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "M": "H",
+ "MM": "HH",
+ "H": "G",
+ "HH": "GG",
+ "ss": "mm"
+}
\ No newline at end of file
diff --git a/js/data/locale/sg/dateres.json b/js/data/locale/sg/dateres.json
new file mode 100644
index 0000000000..470b38f074
--- /dev/null
+++ b/js/data/locale/sg/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Na lâ",
+ "Day": "Lâ",
+ "Era": "Kùotângo",
+ "Hour": "Ngbonga",
+ "Minute": "Ndurü ngbonga",
+ "Month": "Nze",
+ "Second": "Nzîna ngbonga",
+ "Time Zone": "Zukangbonga",
+ "Week": "Dimâsi",
+ "Year": "Ngû",
+ "D": "LÂ",
+ "DD": "LÂ",
+ "YY": "NN",
+ "YYYY": "NGÛ",
+ "M": "N",
+ "MM": "NN",
+ "H": "N",
+ "HH": "NN",
+ "mm": "nn",
+ "ss": "nn"
+}
\ No newline at end of file
diff --git a/js/data/locale/shi/Latn/dateres.json b/js/data/locale/shi/Latn/dateres.json
new file mode 100644
index 0000000000..10f877a314
--- /dev/null
+++ b/js/data/locale/shi/Latn/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "tizi g wass: tifawt / tadggʷat",
+ "Day": "ass",
+ "Era": "tasut",
+ "Hour": "tasragt",
+ "Minute": "tusdidt",
+ "Month": "ayyur",
+ "Second": "tasint",
+ "Time Zone": "akud n ugmmaḍ",
+ "Week": "imalass",
+ "Year": "asggʷas",
+ "D": "A",
+ "DD": "AA",
+ "YY": "AA",
+ "YYYY": "AAAA",
+ "M": "A",
+ "MM": "AA",
+ "H": "T",
+ "HH": "TT",
+ "mm": "tt",
+ "ss": "tt"
+}
\ No newline at end of file
diff --git a/js/data/locale/shi/dateres.json b/js/data/locale/shi/dateres.json
new file mode 100644
index 0000000000..7ebc7c8423
--- /dev/null
+++ b/js/data/locale/shi/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "ⵜⵉⵣⵉ ⴳ ⵡⴰⵙⵙ: ⵜⵉⴼⴰⵡⵜ/ⵜⴰⴷⴳⴳⵯⴰⵜ",
+ "Day": "ⴰⵙⵙ",
+ "Era": "ⵜⴰⵙⵓⵜ",
+ "Hour": "ⵜⴰⵙⵔⴰⴳⵜ",
+ "Minute": "ⵜⵓⵙⴷⵉⴷⵜ",
+ "Month": "ⴰⵢⵢⵓⵔ",
+ "Second": "ⵜⴰⵙⵉⵏⵜ",
+ "Time Zone": "ⴰⴽⵓⴷ ⵏ ⵓⴳⵎⵎⴰⴹ",
+ "Week": "ⵉⵎⴰⵍⴰⵙⵙ",
+ "Year": "ⴰⵙⴳⴳⵯⴰⵙ",
+ "D": "ⴰ",
+ "DD": "ⴰⴰ",
+ "YY": "ⴰⴰ",
+ "YYYY": "ⴰⴰⴰⴰ",
+ "M": "ⴰ",
+ "MM": "ⴰⴰ",
+ "H": "ⵜ",
+ "HH": "ⵜⵜ",
+ "mm": "ⵜⵜ",
+ "ss": "ⵜⵜ"
+}
\ No newline at end of file
diff --git a/js/data/locale/si/dateres.json b/js/data/locale/si/dateres.json
new file mode 100644
index 0000000000..8235da4a82
--- /dev/null
+++ b/js/data/locale/si/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "පෙ.ව/ප.ව",
+ "Day": "දිනය",
+ "Day of Year": "වසරේ දිනය",
+ "Era": "යුගය",
+ "Hour": "පැය",
+ "Minute": "මිනිත්තුව",
+ "Month": "මාසය",
+ "Second": "තත්පරය",
+ "Time Zone": "වේලා කලාපය",
+ "Week": "සතිය",
+ "Week of Month": "මාසයේ සතිය",
+ "Year": "වර්ෂය",
+ "D": "ද",
+ "DD": "දද",
+ "YY": "වව",
+ "YYYY": "වවවව",
+ "M": "ම",
+ "MM": "මම",
+ "H": "ප",
+ "HH": "පප",
+ "mm": "මම",
+ "ss": "තත"
+}
\ No newline at end of file
diff --git a/js/data/locale/sk/dateres.json b/js/data/locale/sk/dateres.json
new file mode 100644
index 0000000000..a24ae0a50e
--- /dev/null
+++ b/js/data/locale/sk/dateres.json
@@ -0,0 +1,15 @@
+{
+ "Day": "deň",
+ "Day of Year": "deň roka",
+ "Era": "letopočet",
+ "Hour": "hodina",
+ "Minute": "minúta",
+ "Month": "mesiac",
+ "Second": "sekunda",
+ "Time Zone": "časové pásmo",
+ "Week": "týždeň",
+ "Week of Month": "týždeň mesiaca",
+ "Year": "rok",
+ "YY": "RR",
+ "YYYY": "ROK"
+}
\ No newline at end of file
diff --git a/js/data/locale/sl/dateres.json b/js/data/locale/sl/dateres.json
new file mode 100644
index 0000000000..e489018b09
--- /dev/null
+++ b/js/data/locale/sl/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "dop/pop",
+ "Day": "dan",
+ "Day of Year": "dan leta",
+ "Era": "doba",
+ "Hour": "ura",
+ "Minute": "minuta",
+ "Month": "mesec",
+ "Second": "sekunda",
+ "Time Zone": "časovni pas",
+ "Week": "teden",
+ "Week of Month": "teden meseca",
+ "Year": "leto",
+ "YY": "LL",
+ "YYYY": "LLLL",
+ "H": "U",
+ "HH": "UU"
+}
\ No newline at end of file
diff --git a/js/data/locale/smn/dateres.json b/js/data/locale/smn/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/smn/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/sn/dateres.json b/js/data/locale/sn/dateres.json
new file mode 100644
index 0000000000..3e826f024e
--- /dev/null
+++ b/js/data/locale/sn/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "Zuva",
+ "Era": "Mukore",
+ "Hour": "Awa",
+ "Minute": "Mineti",
+ "Month": "Mwedzi",
+ "Second": "Sekondi",
+ "Time Zone": "Nguva",
+ "Week": "Vhiki",
+ "Year": "Gore",
+ "D": "Z",
+ "DD": "ZZ",
+ "YY": "GG",
+ "YYYY": "GGGG",
+ "H": "A",
+ "HH": "AA"
+}
\ No newline at end of file
diff --git a/js/data/locale/so/dateres.json b/js/data/locale/so/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/so/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/sq/dateres.json b/js/data/locale/sq/dateres.json
new file mode 100644
index 0000000000..8bd5dbcbf0
--- /dev/null
+++ b/js/data/locale/sq/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "paradite/pasdite",
+ "Day": "ditë",
+ "Day of Year": "ditë e vitit",
+ "Era": "erë",
+ "Hour": "orë",
+ "Minute": "minutë",
+ "Month": "muaj",
+ "Second": "sekondë",
+ "Time Zone": "brezi orar",
+ "Week": "javë",
+ "Week of Month": "javë e muajit",
+ "Year": "vit",
+ "YY": "VV",
+ "YYYY": "VIT",
+ "H": "O",
+ "HH": "OO"
+}
\ No newline at end of file
diff --git a/js/data/locale/sr/Latn/dateres.json b/js/data/locale/sr/Latn/dateres.json
new file mode 100644
index 0000000000..a6b4413df8
--- /dev/null
+++ b/js/data/locale/sr/Latn/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "pre podne/po podne",
+ "Day": "dan",
+ "Day of Year": "dan u godini",
+ "Era": "era",
+ "Hour": "sat",
+ "Minute": "minut",
+ "Month": "mesec",
+ "Second": "sekund",
+ "Time Zone": "vremenska zona",
+ "Week": "nedelja",
+ "Week of Month": "nedelja u mesecu",
+ "Year": "godina",
+ "D": "D",
+ "DD": "DD",
+ "YY": "GG",
+ "YYYY": "GGGG",
+ "M": "M",
+ "MM": "MM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "mm",
+ "ss": "ss"
+}
\ No newline at end of file
diff --git a/js/data/locale/sr/dateres.json b/js/data/locale/sr/dateres.json
new file mode 100644
index 0000000000..144a34100e
--- /dev/null
+++ b/js/data/locale/sr/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "пре подне/по подне",
+ "Day": "дан",
+ "Day of Year": "дан у години",
+ "Era": "ера",
+ "Hour": "сат",
+ "Minute": "минут",
+ "Month": "месец",
+ "Second": "секунд",
+ "Time Zone": "временска зона",
+ "Week": "недеља",
+ "Week of Month": "недеља у месецу",
+ "Year": "година",
+ "D": "Д",
+ "DD": "ДД",
+ "YY": "ГГ",
+ "YYYY": "ГГГГ",
+ "M": "М",
+ "MM": "ММ",
+ "H": "С",
+ "HH": "СС",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/sv/dateres.json b/js/data/locale/sv/dateres.json
new file mode 100644
index 0000000000..06754522a7
--- /dev/null
+++ b/js/data/locale/sv/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "fm/em",
+ "Day": "dag",
+ "Day of Year": "dag under året",
+ "Era": "era",
+ "Hour": "timme",
+ "Minute": "minut",
+ "Month": "månad",
+ "Second": "sekund",
+ "Time Zone": "tidszon",
+ "Week": "vecka",
+ "Week of Month": "vecka i månaden",
+ "Year": "år",
+ "YY": "ÅR",
+ "YYYY": "ÅR",
+ "H": "T",
+ "HH": "TT"
+}
\ No newline at end of file
diff --git a/js/data/locale/sw/CD/dateres.json b/js/data/locale/sw/CD/dateres.json
new file mode 100644
index 0000000000..becc00185f
--- /dev/null
+++ b/js/data/locale/sw/CD/dateres.json
@@ -0,0 +1,6 @@
+{
+ "AM/PM": "Muda wa siku",
+ "Era": "Wakati",
+ "Time Zone": "Majira ya saa",
+ "Week": "Juma"
+}
\ No newline at end of file
diff --git a/js/data/locale/sw/dateres.json b/js/data/locale/sw/dateres.json
new file mode 100644
index 0000000000..4ba4bf998b
--- /dev/null
+++ b/js/data/locale/sw/dateres.json
@@ -0,0 +1,20 @@
+{
+ "Day": "siku",
+ "Day of Year": "siku ya mwaka",
+ "Era": "enzi",
+ "Hour": "saa",
+ "Minute": "dakika",
+ "Month": "mwezi",
+ "Second": "sekunde",
+ "Time Zone": "saa za eneo",
+ "Week": "wiki",
+ "Week of Month": "wiki ya mwezi",
+ "Year": "mwaka",
+ "D": "S",
+ "DD": "SS",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/sysres.json b/js/data/locale/sysres.json
index 1bf7b7f186..5eafe2f7a2 100644
--- a/js/data/locale/sysres.json
+++ b/js/data/locale/sysres.json
@@ -641,4 +641,4 @@
"separatorLong": ", ",
"separatorMedium": " ",
"separatorShort": " "
-}
\ No newline at end of file
+}
diff --git a/js/data/locale/ta/dateres.json b/js/data/locale/ta/dateres.json
new file mode 100644
index 0000000000..7f60d8dca5
--- /dev/null
+++ b/js/data/locale/ta/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "முற்பகல்/பிற்பகல்",
+ "Day": "நாள்",
+ "Day of Year": "வருடத்தின் நாள்",
+ "Era": "காலம்",
+ "Hour": "மணி",
+ "Minute": "நிமிடம்",
+ "Month": "மாதம்",
+ "Second": "விநாடி",
+ "Time Zone": "நேர மண்டலம்",
+ "Week": "வாரம்",
+ "Week of Month": "மாதத்தின் வாரம்",
+ "Year": "ஆண்டு",
+ "D": "ந",
+ "DD": "நந",
+ "YY": "ஆஆ",
+ "YYYY": "ஆஆஆஆ",
+ "M": "ம",
+ "MM": "மம",
+ "H": "ம",
+ "HH": "மம",
+ "mm": "நந",
+ "ss": "வவ"
+}
\ No newline at end of file
diff --git a/js/data/locale/te/dateres.json b/js/data/locale/te/dateres.json
new file mode 100644
index 0000000000..767bcef36e
--- /dev/null
+++ b/js/data/locale/te/dateres.json
@@ -0,0 +1,23 @@
+{
+ "Day": "దినం",
+ "Day of Year": "సంవత్సరంలో దినం",
+ "Era": "యుగం",
+ "Hour": "గంట",
+ "Minute": "నిమిషము",
+ "Month": "నెల",
+ "Second": "సెకను",
+ "Time Zone": "సమయ మండలి",
+ "Week": "వారము",
+ "Week of Month": "నెలలో వారం",
+ "Year": "సంవత్సరం",
+ "D": "ద",
+ "DD": "దద",
+ "YY": "సస",
+ "YYYY": "సససస",
+ "M": "న",
+ "MM": "నన",
+ "H": "గ",
+ "HH": "గగ",
+ "mm": "నన",
+ "ss": "సస"
+}
\ No newline at end of file
diff --git a/js/data/locale/teo/dateres.json b/js/data/locale/teo/dateres.json
new file mode 100644
index 0000000000..329499f2dc
--- /dev/null
+++ b/js/data/locale/teo/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "TA/EB",
+ "Day": "Aparan",
+ "Era": "Enzi",
+ "Hour": "Esaa",
+ "Minute": "Idakika",
+ "Month": "Elap",
+ "Second": "Isekonde",
+ "Time Zone": "Majira ya saa",
+ "Week": "Ewiki",
+ "Year": "Ekan",
+ "D": "A",
+ "DD": "AA",
+ "YY": "EE",
+ "YYYY": "EEEE",
+ "M": "E",
+ "MM": "EE",
+ "H": "E",
+ "HH": "EE",
+ "mm": "ii",
+ "ss": "ii"
+}
\ No newline at end of file
diff --git a/js/data/locale/tg/dateres.json b/js/data/locale/tg/dateres.json
new file mode 100644
index 0000000000..02544d9851
--- /dev/null
+++ b/js/data/locale/tg/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "пе. чо./па. чо.",
+ "Day": "рӯз",
+ "Era": "мабдаи таърих",
+ "Hour": "соат",
+ "Minute": "дақиқа",
+ "Month": "моҳ",
+ "Second": "сония",
+ "Time Zone": "минтақаи вақт",
+ "Week": "ҳафта",
+ "Year": "сол",
+ "D": "РӮЗ",
+ "DD": "РӮЗ",
+ "YY": "СОЛ",
+ "YYYY": "СОЛ",
+ "M": "МОҲ",
+ "MM": "МОҲ",
+ "H": "СОАТ",
+ "HH": "СОАТ",
+ "mm": "дақиқа",
+ "ss": "сония"
+}
\ No newline at end of file
diff --git a/js/data/locale/th/dateres.json b/js/data/locale/th/dateres.json
new file mode 100644
index 0000000000..c27a7918f2
--- /dev/null
+++ b/js/data/locale/th/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ช่วงวัน",
+ "Day": "วัน",
+ "Day of Year": "วันของปี",
+ "Era": "สมัย",
+ "Hour": "ชั่วโมง",
+ "Minute": "นาที",
+ "Month": "เดือน",
+ "Second": "วินาที",
+ "Time Zone": "เขตเวลา",
+ "Week": "สัปดาห์",
+ "Week of Month": "สัปดาห์ของเดือน",
+ "Year": "ปี",
+ "D": "ว",
+ "DD": "วว",
+ "YY": "ปี",
+ "YYYY": "ปี",
+ "M": "เ",
+ "MM": "เเ",
+ "H": "ช",
+ "HH": "ชช",
+ "mm": "นน",
+ "ss": "วว"
+}
\ No newline at end of file
diff --git a/js/data/locale/ti/dateres.json b/js/data/locale/ti/dateres.json
new file mode 100644
index 0000000000..88f784663d
--- /dev/null
+++ b/js/data/locale/ti/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "ክፍለ መዓልቲ",
+ "Day": "መዓልቲ",
+ "Day of Year": "መዓልቲ ናይ ዓመት",
+ "Era": "ዘመን",
+ "Hour": "ሰዓት",
+ "Minute": "ደቒቕ",
+ "Month": "ወርሒ",
+ "Second": "ካልኢት",
+ "Time Zone": "ክልል",
+ "Week": "ሰሙን",
+ "Week of Month": "ሰን ናይ ወርሒ",
+ "Year": "ዓመት",
+ "D": "መ",
+ "DD": "መመ",
+ "YY": "ዓዓ",
+ "YYYY": "ዓመት",
+ "M": "ወ",
+ "MM": "ወወ",
+ "H": "ሰ",
+ "HH": "ሰሰ",
+ "mm": "ደደ",
+ "ss": "ካካ"
+}
\ No newline at end of file
diff --git a/js/data/locale/tk/dateres.json b/js/data/locale/tk/dateres.json
new file mode 100644
index 0000000000..e7bfe6f991
--- /dev/null
+++ b/js/data/locale/tk/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "günortadan öň/günortadan soň",
+ "Day": "gün",
+ "Day of Year": "ýylyň güni",
+ "Era": "era",
+ "Hour": "sagat",
+ "Minute": "minut",
+ "Month": "aý",
+ "Second": "sekunt",
+ "Time Zone": "sagat guşaklygy",
+ "Week": "hepde",
+ "Week of Month": "aýyň hepdesi",
+ "Year": "ýyl",
+ "D": "GÜN",
+ "DD": "GÜN",
+ "YY": "ÝYL",
+ "YYYY": "ÝYL",
+ "M": "AÝ",
+ "MM": "AÝ",
+ "H": "SAGAT",
+ "HH": "SAGAT",
+ "mm": "minut",
+ "ss": "sekunt"
+}
\ No newline at end of file
diff --git a/js/data/locale/to/dateres.json b/js/data/locale/to/dateres.json
new file mode 100644
index 0000000000..d1293f182b
--- /dev/null
+++ b/js/data/locale/to/dateres.json
@@ -0,0 +1,17 @@
+{
+ "Day": "ʻaho",
+ "Day of Year": "ʻaho ʻo e taʻu",
+ "Era": "kuonga",
+ "Hour": "houa",
+ "Minute": "miniti",
+ "Month": "māhina",
+ "Second": "sekoni",
+ "Time Zone": "taimi fakavahe",
+ "Week": "uike",
+ "Week of Month": "uike ʻo e māhina",
+ "Year": "taʻu",
+ "D": "ʻ",
+ "DD": "ʻʻ",
+ "YY": "TT",
+ "YYYY": "TTTT"
+}
\ No newline at end of file
diff --git a/js/data/locale/tr/dateres.json b/js/data/locale/tr/dateres.json
new file mode 100644
index 0000000000..358b1ab25a
--- /dev/null
+++ b/js/data/locale/tr/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "ÖÖ/ÖS",
+ "Day": "gün",
+ "Day of Year": "yılın günü",
+ "Era": "çağ",
+ "Hour": "saat",
+ "Minute": "dakika",
+ "Month": "ay",
+ "Second": "saniye",
+ "Time Zone": "saat dilimi",
+ "Week": "hafta",
+ "Week of Month": "ayın haftası",
+ "Year": "yıl",
+ "D": "G",
+ "DD": "GG",
+ "YYYY": "YIL",
+ "M": "AY",
+ "MM": "AY",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/tt/dateres.json b/js/data/locale/tt/dateres.json
new file mode 100644
index 0000000000..1811ea73a0
--- /dev/null
+++ b/js/data/locale/tt/dateres.json
@@ -0,0 +1,21 @@
+{
+ "Day": "көн",
+ "Era": "эра",
+ "Hour": "сәгать",
+ "Minute": "минут",
+ "Month": "ай",
+ "Second": "секунд",
+ "Time Zone": "вакыт өлкәсе",
+ "Week": "атна",
+ "Year": "ел",
+ "D": "К",
+ "DD": "КК",
+ "YY": "ЕЛ",
+ "YYYY": "ЕЛ",
+ "M": "АЙ",
+ "MM": "АЙ",
+ "H": "С",
+ "HH": "СС",
+ "mm": "мм",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/twq/dateres.json b/js/data/locale/twq/dateres.json
new file mode 100644
index 0000000000..2601bf41d6
--- /dev/null
+++ b/js/data/locale/twq/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Subbaahi/Zaarikay banda",
+ "Day": "Zaari",
+ "Era": "Zaman",
+ "Hour": "Guuru",
+ "Minute": "Miniti",
+ "Month": "Handu",
+ "Second": "Miti",
+ "Time Zone": "Leerazuu",
+ "Week": "Hebu",
+ "Year": "Jiiri",
+ "D": "Z",
+ "DD": "ZZ",
+ "YY": "JJ",
+ "YYYY": "JJJJ",
+ "M": "H",
+ "MM": "HH",
+ "H": "G",
+ "HH": "GG",
+ "ss": "mm"
+}
\ No newline at end of file
diff --git a/js/data/locale/tzm/dateres.json b/js/data/locale/tzm/dateres.json
new file mode 100644
index 0000000000..28aecd5350
--- /dev/null
+++ b/js/data/locale/tzm/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Zdat azal/Deffir azal",
+ "Day": "Ass",
+ "Era": "Tallit",
+ "Hour": "Tasragt",
+ "Minute": "Tusdat",
+ "Month": "Ayur",
+ "Second": "Tusnat",
+ "Time Zone": "Aseglem asergan",
+ "Week": "Imalass",
+ "Year": "Asseggas",
+ "D": "A",
+ "DD": "AA",
+ "YY": "AA",
+ "YYYY": "AAAA",
+ "M": "A",
+ "MM": "AA",
+ "H": "T",
+ "HH": "TT",
+ "mm": "tt",
+ "ss": "tt"
+}
\ No newline at end of file
diff --git a/js/data/locale/ug/dateres.json b/js/data/locale/ug/dateres.json
new file mode 100644
index 0000000000..df892b8582
--- /dev/null
+++ b/js/data/locale/ug/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "چۈشتىن بۇرۇن/چۈشتىن كېيىن",
+ "Day": "كۈن",
+ "Era": "مىلادىيە",
+ "Hour": "سائەت",
+ "Minute": "مىنۇت",
+ "Month": "ئاي",
+ "Second": "سېكۇنت",
+ "Time Zone": "ۋاقىت رايونى",
+ "Week": "ھەپتە",
+ "Year": "يىل",
+ "D": "كۈن",
+ "DD": "كۈن",
+ "YY": "يىل",
+ "YYYY": "يىل",
+ "M": "ئاي",
+ "MM": "ئاي",
+ "H": "سائەت",
+ "HH": "سائەت",
+ "mm": "مىنۇت",
+ "ss": "سېكۇنت"
+}
\ No newline at end of file
diff --git a/js/data/locale/uk/dateres.json b/js/data/locale/uk/dateres.json
new file mode 100644
index 0000000000..d26a5a7abc
--- /dev/null
+++ b/js/data/locale/uk/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "дп/пп",
+ "Day": "день",
+ "Day of Year": "день року",
+ "Era": "ера",
+ "Hour": "година",
+ "Minute": "хвилина",
+ "Month": "місяць",
+ "Second": "секунда",
+ "Time Zone": "часовий пояс",
+ "Week": "тиждень",
+ "Week of Month": "тиждень місяця",
+ "Year": "рік",
+ "D": "Д",
+ "DD": "ДД",
+ "YY": "РР",
+ "YYYY": "РІК",
+ "M": "М",
+ "MM": "ММ",
+ "H": "Г",
+ "HH": "ГГ",
+ "mm": "хх",
+ "ss": "сс"
+}
\ No newline at end of file
diff --git a/js/data/locale/ur/dateres.json b/js/data/locale/ur/dateres.json
new file mode 100644
index 0000000000..1ee103abaf
--- /dev/null
+++ b/js/data/locale/ur/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "قبل دوپہر/بعد دوپہر",
+ "Day": "دن",
+ "Day of Year": "یوم سال",
+ "Era": "عہد",
+ "Hour": "گھنٹہ",
+ "Minute": "منٹ",
+ "Month": "مہینہ",
+ "Second": "سیکنڈ",
+ "Time Zone": "منطقۂ وقت",
+ "Week": "ہفتہ",
+ "Week of Month": "مہینے کا ہفتہ",
+ "Year": "سال",
+ "D": "دن",
+ "DD": "دن",
+ "YY": "سال",
+ "YYYY": "سال",
+ "M": "مہینہ",
+ "MM": "مہینہ",
+ "H": "گھنٹہ",
+ "HH": "گھنٹہ",
+ "mm": "منٹ",
+ "ss": "سیکنڈ"
+}
\ No newline at end of file
diff --git a/js/data/locale/uz/Arab/dateres.json b/js/data/locale/uz/Arab/dateres.json
new file mode 100644
index 0000000000..ec809a68ae
--- /dev/null
+++ b/js/data/locale/uz/Arab/dateres.json
@@ -0,0 +1,6 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day of Year": "Day Of Year",
+ "Time Zone": "Zone",
+ "Week of Month": "Week Of Month"
+}
\ No newline at end of file
diff --git a/js/data/locale/uz/Cyrl/dateres.json b/js/data/locale/uz/Cyrl/dateres.json
new file mode 100644
index 0000000000..4bbbbba2cd
--- /dev/null
+++ b/js/data/locale/uz/Cyrl/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "Кун вақти",
+ "Day": "Кун",
+ "Day of Year": "Day Of Year",
+ "Era": "Эра",
+ "Hour": "Соат",
+ "Minute": "Дақиқа",
+ "Month": "Ой",
+ "Second": "Сония",
+ "Time Zone": "Минтақа",
+ "Week": "Ҳафта",
+ "Week of Month": "Week Of Month",
+ "Year": "Йил",
+ "D": "КУН",
+ "DD": "КУН",
+ "YY": "ЙИЛ",
+ "YYYY": "ЙИЛ",
+ "M": "ОЙ",
+ "MM": "ОЙ",
+ "H": "СОАТ",
+ "HH": "СОАТ",
+ "mm": "Дақиқа",
+ "ss": "Сония"
+}
\ No newline at end of file
diff --git a/js/data/locale/uz/dateres.json b/js/data/locale/uz/dateres.json
new file mode 100644
index 0000000000..95ea25eefa
--- /dev/null
+++ b/js/data/locale/uz/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "TO/TK",
+ "Day": "kun",
+ "Day of Year": "yilning kuni",
+ "Era": "era",
+ "Hour": "soat",
+ "Minute": "daqiqa",
+ "Month": "oy",
+ "Second": "soniya",
+ "Time Zone": "vaqt mintaqasi",
+ "Week": "hafta",
+ "Week of Month": "oyning haftasi",
+ "Year": "yil",
+ "D": "KUN",
+ "DD": "KUN",
+ "YY": "YIL",
+ "YYYY": "YIL",
+ "M": "OY",
+ "MM": "OY",
+ "H": "SOAT",
+ "HH": "SOAT",
+ "mm": "daqiqa",
+ "ss": "soniya"
+}
\ No newline at end of file
diff --git a/js/data/locale/vai/Latn/dateres.json b/js/data/locale/vai/Latn/dateres.json
new file mode 100644
index 0000000000..34c0488e69
--- /dev/null
+++ b/js/data/locale/vai/Latn/dateres.json
@@ -0,0 +1,19 @@
+{
+ "Day": "tele",
+ "Hour": "hawa",
+ "Minute": "mini",
+ "Month": "kalo",
+ "Second": "jaki-jaka",
+ "Week": "wiki",
+ "Year": "saŋ",
+ "D": "T",
+ "DD": "TT",
+ "YY": "SS",
+ "YYYY": "SAŊ",
+ "M": "K",
+ "MM": "KK",
+ "H": "H",
+ "HH": "HH",
+ "mm": "mm",
+ "ss": "jj"
+}
\ No newline at end of file
diff --git a/js/data/locale/vai/dateres.json b/js/data/locale/vai/dateres.json
new file mode 100644
index 0000000000..c741c4123a
--- /dev/null
+++ b/js/data/locale/vai/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "ꔎꔒ",
+ "Hour": "ꕌꕎ",
+ "Minute": "ꕆꕇ",
+ "Month": "ꕪꖃ",
+ "Second": "ꕧꕃꕧꕪ",
+ "Time Zone": "Zone",
+ "Week": "ꔨꔤꕃ",
+ "Year": "ꕢꘋ",
+ "D": "ꔎꔒ",
+ "DD": "ꔎꔒ",
+ "YY": "ꕢꘋ",
+ "YYYY": "ꕢꘋ",
+ "M": "ꕪꖃ",
+ "MM": "ꕪꖃ",
+ "H": "ꕌꕎ",
+ "HH": "ꕌꕎ",
+ "mm": "ꕆꕇ",
+ "ss": "ꕧꕧ"
+}
\ No newline at end of file
diff --git a/js/data/locale/vi/dateres.json b/js/data/locale/vi/dateres.json
new file mode 100644
index 0000000000..b51505798e
--- /dev/null
+++ b/js/data/locale/vi/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "SA/CH",
+ "Day": "Ngày",
+ "Day of Year": "ngày trong năm",
+ "Era": "thời đại",
+ "Hour": "Giờ",
+ "Minute": "Phút",
+ "Month": "Tháng",
+ "Second": "Giây",
+ "Time Zone": "Múi giờ",
+ "Week": "Tuần",
+ "Week of Month": "tuần trong tháng",
+ "Year": "Năm",
+ "D": "N",
+ "DD": "NN",
+ "YY": "NN",
+ "YYYY": "NĂM",
+ "M": "T",
+ "MM": "TT",
+ "H": "G",
+ "HH": "GG",
+ "mm": "pp",
+ "ss": "gg"
+}
\ No newline at end of file
diff --git a/js/data/locale/vo/dateres.json b/js/data/locale/vo/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/vo/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/vun/dateres.json b/js/data/locale/vun/dateres.json
new file mode 100644
index 0000000000..1afbc89c0f
--- /dev/null
+++ b/js/data/locale/vun/dateres.json
@@ -0,0 +1,19 @@
+{
+ "AM/PM": "Mfiri o siku",
+ "Day": "Mfiri",
+ "Era": "Kacha",
+ "Hour": "Saa",
+ "Minute": "Dakyika",
+ "Month": "Mori",
+ "Second": "Sekunde",
+ "Time Zone": "Mfiri o saa",
+ "Week": "Wiikyi",
+ "Year": "Maka",
+ "D": "M",
+ "DD": "MM",
+ "YY": "MM",
+ "YYYY": "MMMM",
+ "H": "S",
+ "HH": "SS",
+ "mm": "dd"
+}
\ No newline at end of file
diff --git a/js/data/locale/wae/dateres.json b/js/data/locale/wae/dateres.json
new file mode 100644
index 0000000000..2b152ee115
--- /dev/null
+++ b/js/data/locale/wae/dateres.json
@@ -0,0 +1,17 @@
+{
+ "Day": "Tag",
+ "Era": "Epoča",
+ "Hour": "Schtund",
+ "Minute": "Mínütta",
+ "Month": "Mánet",
+ "Second": "Sekunda",
+ "Time Zone": "Zitzóna",
+ "Week": "Wuča",
+ "Year": "Jár",
+ "D": "T",
+ "DD": "TT",
+ "YY": "JJ",
+ "YYYY": "JÁR",
+ "H": "S",
+ "HH": "SS"
+}
\ No newline at end of file
diff --git a/js/data/locale/wo/dateres.json b/js/data/locale/wo/dateres.json
new file mode 100644
index 0000000000..3b1e257531
--- /dev/null
+++ b/js/data/locale/wo/dateres.json
@@ -0,0 +1,21 @@
+{
+ "AM/PM": "Sub/Ngo",
+ "Day": "fan",
+ "Era": "jamono",
+ "Hour": "waxtu",
+ "Minute": "simili",
+ "Month": "weer",
+ "Second": "saa",
+ "Time Zone": "goxu waxtu",
+ "Week": "ayu-bis",
+ "Year": "at",
+ "D": "F",
+ "DD": "FF",
+ "YY": "AT",
+ "YYYY": "AT",
+ "M": "W",
+ "MM": "WW",
+ "H": "W",
+ "HH": "WW",
+ "mm": "ss"
+}
\ No newline at end of file
diff --git a/js/data/locale/xh/dateres.json b/js/data/locale/xh/dateres.json
new file mode 100644
index 0000000000..e491f37a8e
--- /dev/null
+++ b/js/data/locale/xh/dateres.json
@@ -0,0 +1,4 @@
+{
+ "AM/PM": "Dayperiod",
+ "Time Zone": "Zone"
+}
\ No newline at end of file
diff --git a/js/data/locale/xog/dateres.json b/js/data/locale/xog/dateres.json
new file mode 100644
index 0000000000..3f73264c18
--- /dev/null
+++ b/js/data/locale/xog/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "munkyo/Eigulo",
+ "Day": "Olunaku",
+ "Era": "Emulembe",
+ "Hour": "Essawa",
+ "Minute": "Edakiika",
+ "Month": "Omwezi",
+ "Second": "Obutikitiki",
+ "Time Zone": "Essawa edha",
+ "Week": "Esabiiti",
+ "Year": "Omwaka",
+ "D": "O",
+ "DD": "OO",
+ "YY": "OO",
+ "YYYY": "OOOO",
+ "M": "O",
+ "MM": "OO",
+ "H": "E",
+ "HH": "EE",
+ "mm": "ee",
+ "ss": "oo"
+}
\ No newline at end of file
diff --git a/js/data/locale/yav/dateres.json b/js/data/locale/yav/dateres.json
new file mode 100644
index 0000000000..e746e3db5e
--- /dev/null
+++ b/js/data/locale/yav/dateres.json
@@ -0,0 +1,18 @@
+{
+ "AM/PM": "kiɛmɛ́ɛm,kisɛ́ndɛ",
+ "Day": "puɔ́sɛ́",
+ "Era": "kipéŋén",
+ "Hour": "kisikɛl,",
+ "Minute": "minít",
+ "Month": "oóli",
+ "Second": "síkɛn",
+ "Time Zone": "kinúki kisikɛl ɔ́ pitɔŋ",
+ "Week": "sɔ́ndiɛ",
+ "Year": "yɔɔŋ",
+ "D": "P",
+ "DD": "PP",
+ "M": "O",
+ "MM": "OO",
+ "H": "K",
+ "HH": "KK"
+}
\ No newline at end of file
diff --git a/js/data/locale/yi/dateres.json b/js/data/locale/yi/dateres.json
new file mode 100644
index 0000000000..599a641662
--- /dev/null
+++ b/js/data/locale/yi/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Dayperiod",
+ "Day": "טאָג",
+ "Era": "תקופֿה",
+ "Hour": "שעה",
+ "Minute": "מינוט",
+ "Month": "מאנאַט",
+ "Second": "סעקונדע",
+ "Time Zone": "צײַטזאנע",
+ "Week": "וואך",
+ "Year": "יאָר",
+ "D": "טאָג",
+ "DD": "טאָג",
+ "YY": "יאָר",
+ "YYYY": "יאָר",
+ "M": "מאנאַט",
+ "MM": "מאנאַט",
+ "H": "שעה",
+ "HH": "שעה",
+ "mm": "מינוט",
+ "ss": "סעקונדע"
+}
\ No newline at end of file
diff --git a/js/data/locale/yo/BJ/dateres.json b/js/data/locale/yo/BJ/dateres.json
new file mode 100644
index 0000000000..3954da7432
--- /dev/null
+++ b/js/data/locale/yo/BJ/dateres.json
@@ -0,0 +1,12 @@
+{
+ "AM/PM": "Àárɔ̀/ɔ̀sán",
+ "Day": "Ɔjɔ́",
+ "Minute": "Ìsɛ́jú",
+ "Second": "Ìsɛ́jú Ààyá",
+ "Week": "Ɔ̀sè",
+ "Year": "Ɔdún",
+ "D": "Ɔ",
+ "DD": "ƆƆ",
+ "YY": "ƆƆ",
+ "YYYY": "ƆƆƆƆ"
+}
\ No newline at end of file
diff --git a/js/data/locale/yo/dateres.json b/js/data/locale/yo/dateres.json
new file mode 100644
index 0000000000..9a74e15fbb
--- /dev/null
+++ b/js/data/locale/yo/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "Àárọ̀/ọ̀sán",
+ "Day": "Ọjọ́",
+ "Era": "Ìgbà",
+ "Hour": "wákàtí",
+ "Minute": "Ìsẹ́jú",
+ "Month": "Osù",
+ "Second": "Ìsẹ́jú Ààyá",
+ "Time Zone": "Ibi Àkókò Àgbáyé",
+ "Week": "Ọ̀sè",
+ "Year": "Ọdún",
+ "D": "Ọ",
+ "DD": "ỌỌ",
+ "YY": "ỌỌ",
+ "YYYY": "ỌỌỌỌ",
+ "M": "O",
+ "MM": "OO",
+ "H": "W",
+ "HH": "WW",
+ "mm": "ìì",
+ "ss": "ìì"
+}
\ No newline at end of file
diff --git a/js/data/locale/yue/Hans/dateres.json b/js/data/locale/yue/Hans/dateres.json
new file mode 100644
index 0000000000..99bb247da1
--- /dev/null
+++ b/js/data/locale/yue/Hans/dateres.json
@@ -0,0 +1,10 @@
+{
+ "Hour": "小时",
+ "Minute": "分钟",
+ "Time Zone": "时区",
+ "Week": "周",
+ "Week of Month": "月周",
+ "H": "小时",
+ "HH": "小时",
+ "mm": "分钟"
+}
\ No newline at end of file
diff --git a/js/data/locale/yue/dateres.json b/js/data/locale/yue/dateres.json
new file mode 100644
index 0000000000..74874c8f06
--- /dev/null
+++ b/js/data/locale/yue/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "上午/下午",
+ "Day": "日",
+ "Day of Year": "年日",
+ "Era": "年代",
+ "Hour": "小時",
+ "Minute": "分鐘",
+ "Month": "月",
+ "Second": "秒",
+ "Time Zone": "時區",
+ "Week": "週",
+ "Week of Month": "月週",
+ "Year": "年",
+ "D": "日",
+ "DD": "日",
+ "YY": "年",
+ "YYYY": "年",
+ "M": "月",
+ "MM": "月",
+ "H": "小時",
+ "HH": "小時",
+ "mm": "分鐘",
+ "ss": "秒"
+}
\ No newline at end of file
diff --git a/js/data/locale/zgh/dateres.json b/js/data/locale/zgh/dateres.json
new file mode 100644
index 0000000000..7ebc7c8423
--- /dev/null
+++ b/js/data/locale/zgh/dateres.json
@@ -0,0 +1,22 @@
+{
+ "AM/PM": "ⵜⵉⵣⵉ ⴳ ⵡⴰⵙⵙ: ⵜⵉⴼⴰⵡⵜ/ⵜⴰⴷⴳⴳⵯⴰⵜ",
+ "Day": "ⴰⵙⵙ",
+ "Era": "ⵜⴰⵙⵓⵜ",
+ "Hour": "ⵜⴰⵙⵔⴰⴳⵜ",
+ "Minute": "ⵜⵓⵙⴷⵉⴷⵜ",
+ "Month": "ⴰⵢⵢⵓⵔ",
+ "Second": "ⵜⴰⵙⵉⵏⵜ",
+ "Time Zone": "ⴰⴽⵓⴷ ⵏ ⵓⴳⵎⵎⴰⴹ",
+ "Week": "ⵉⵎⴰⵍⴰⵙⵙ",
+ "Year": "ⴰⵙⴳⴳⵯⴰⵙ",
+ "D": "ⴰ",
+ "DD": "ⴰⴰ",
+ "YY": "ⴰⴰ",
+ "YYYY": "ⴰⴰⴰⴰ",
+ "M": "ⴰ",
+ "MM": "ⴰⴰ",
+ "H": "ⵜ",
+ "HH": "ⵜⵜ",
+ "mm": "ⵜⵜ",
+ "ss": "ⵜⵜ"
+}
\ No newline at end of file
diff --git a/js/data/locale/zh/Hant/dateres.json b/js/data/locale/zh/Hant/dateres.json
new file mode 100644
index 0000000000..fdc1cad4e7
--- /dev/null
+++ b/js/data/locale/zh/Hant/dateres.json
@@ -0,0 +1,12 @@
+{
+ "Day of Year": "年天",
+ "Era": "年代",
+ "Hour": "小時",
+ "Minute": "分鐘",
+ "Time Zone": "時區",
+ "Week": "週",
+ "Week of Month": "週",
+ "H": "小時",
+ "HH": "小時",
+ "mm": "分鐘"
+}
\ No newline at end of file
diff --git a/js/data/locale/zh/dateres.json b/js/data/locale/zh/dateres.json
new file mode 100644
index 0000000000..af0957841c
--- /dev/null
+++ b/js/data/locale/zh/dateres.json
@@ -0,0 +1,24 @@
+{
+ "AM/PM": "上午/下午",
+ "Day": "日",
+ "Day of Year": "年中日",
+ "Era": "纪元",
+ "Hour": "小时",
+ "Minute": "分钟",
+ "Month": "月",
+ "Second": "秒",
+ "Time Zone": "时区",
+ "Week": "周",
+ "Week of Month": "月中周",
+ "Year": "年",
+ "D": "日",
+ "DD": "日",
+ "YY": "年",
+ "YYYY": "年",
+ "M": "月",
+ "MM": "月",
+ "H": "小时",
+ "HH": "小时",
+ "mm": "分钟",
+ "ss": "秒"
+}
\ No newline at end of file
diff --git a/js/data/locale/zu/dateres.json b/js/data/locale/zu/dateres.json
new file mode 100644
index 0000000000..cf8419fa74
--- /dev/null
+++ b/js/data/locale/zu/dateres.json
@@ -0,0 +1,22 @@
+{
+ "Day": "Usuku",
+ "Era": "Isikhathi",
+ "Hour": "Ihora",
+ "Minute": "Iminithi",
+ "Month": "Inyanga",
+ "Second": "Isekhondi",
+ "Time Zone": "Isikhathi sendawo",
+ "Week": "Iviki",
+ "Week of Month": "Iviki leNyanga",
+ "Year": "Unyaka",
+ "D": "U",
+ "DD": "UU",
+ "YY": "UU",
+ "YYYY": "UUUU",
+ "M": "I",
+ "MM": "II",
+ "H": "I",
+ "HH": "II",
+ "mm": "ii",
+ "ss": "ii"
+}
\ No newline at end of file
diff --git a/js/lib/AddressFmt.js b/js/lib/AddressFmt.js
index 5df9d2bf64..896099b084 100644
--- a/js/lib/AddressFmt.js
+++ b/js/lib/AddressFmt.js
@@ -370,7 +370,7 @@ function invertAndFilter(object) {
* // like "City" and "Postal Code" translated to. In this example, we
* // are showing an input form for Dutch addresses, but the labels are
* // written in US English.
- * fmt.getAddressFormatInfo("en-US", true, ilib.bind(this, function(rows) {
+ * fmt.getFormatInfo("en-US", true, ilib.bind(this, function(rows) {
* // iterate through the rows array and dynamically create the input
* // elements with the given labels
* }));
diff --git a/js/lib/DateFmt.js b/js/lib/DateFmt.js
index e445260905..b7c43ba734 100644
--- a/js/lib/DateFmt.js
+++ b/js/lib/DateFmt.js
@@ -1,7 +1,7 @@
/*
* DateFmt.js - Date formatter definition
*
- * Copyright © 2012-2015, 2018, 2020, 2023 JEDLSoft
+ * Copyright © 2012-2015, 2018-2020, 2023 JEDLSoft
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -630,6 +630,7 @@ DateFmt.weekDayLenMap = {
*
* @static
* @public
+ * @deprecated Use DateFmtInfo.getMeridiemsRange() non-static method instead
* @param {Object} options options governing the way this date formatter instance works for getting meridiems range
* @return {Array.<{name:string,start:string,end:string}>}
*/
@@ -867,17 +868,7 @@ DateFmt.prototype = {
while (i < template.length) {
ch = template.charAt(i);
start = i;
- if (ch === "'") {
- // console.log("found quoted string");
- i++;
- // escaped string - push as-is, then dequote later
- while (i < template.length && template.charAt(i) !== "'") {
- i++;
- }
- if (i < template.length) {
- i++; // grab the other quote too
- }
- } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
+ if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
letter = template.charAt(i);
// console.log("found letters " + letter);
while (i < template.length && ch === letter) {
@@ -885,7 +876,15 @@ DateFmt.prototype = {
}
} else {
// console.log("found other");
- while (i < template.length && ch !== "'" && (ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z')) {
+ while (i < template.length && (ch < 'a' || ch > 'z') && (ch < 'A' || ch > 'Z')) {
+ if (ch === "'") {
+ // console.log("found quoted string");
+ i++;
+ // escaped string - push as-is, then dequote later
+ while (i < template.length && template.charAt(i) !== "'") {
+ i++;
+ }
+ }
ch = template.charAt(++i);
}
}
@@ -997,6 +996,7 @@ DateFmt.prototype = {
* CLDR frequently, and possible orderings cannot be predicted. Your code should
* support all 6 possibilities, just in case.
*
+ * @deprecated Use DateFmtInfo.getDateComponentOrder() instead
* @return {string} a string giving the date component order
*/
getDateComponentOrder: function() {
@@ -1080,12 +1080,13 @@ DateFmt.prototype = {
/**
* Return the meridiems range in current locale.
+ * @deprecated Use DateFmtInfo.getMeridiemsRange() instead
* @return {Array.<{name:string,start:string,end:string}>} the range of available meridiems
*/
getMeridiemsRange: function () {
var result;
var _getSysString = function (key) {
- return (this.sysres.getString(undefined, key + "-" + this.calName) || this.sysres.getString(undefined, key)).toString();
+ return (this.sysres.getStringJS(undefined, key + "-" + this.calName) || this.sysres.getStringJS(undefined, key)).toString();
};
switch (this.meridiems) {
@@ -1230,6 +1231,7 @@ DateFmt.prototype = {
* the months have different names depending if that year is a leap year or not.
*
*
+ * @deprecated Use DateFmtInfo.getMonthsOfYear() instead
* @param {Object=} options an object-literal that contains any of the above properties
* @return {Array} an array of the names of all of the months of the year in the current calendar
*/
@@ -1258,7 +1260,7 @@ DateFmt.prototype = {
monthCount = this.cal.getNumMonths(date.getYears());
for (var i = 1; i <= monthCount; i++) {
- months[i] = this.sysres.getString(this._getTemplate(template + i, this.cal.getType())).toString();
+ months[i] = this.sysres.getStringJS(this._getTemplate(template + i, this.cal.getType())).toString();
}
return months;
},
@@ -1273,6 +1275,8 @@ DateFmt.prototype = {
*
length - length of the names of the months being sought. This may be one of
* "short", "medium", "long", or "full"
*
+ *
+ * @deprecated Use DateFmtInfo.getDaysOfWeek() instead
* @param {Object=} options an object-literal that contains one key
* "length" with the standard length strings
* @return {Array} an array of all of the names of the days of the week
@@ -1282,7 +1286,7 @@ DateFmt.prototype = {
template = DateFmt.weekDayLenMap[length],
days = [];
for (var i = 0; i < 7; i++) {
- days[i] = this.sysres.getString(this._getTemplate(template + i, this.cal.getType())).toString();
+ days[i] = this.sysres.getStringJS(this._getTemplate(template + i, this.cal.getType())).toString();
}
return days;
},
@@ -1403,8 +1407,10 @@ DateFmt.prototype = {
case 'LLL':
case 'LLLL':
key = templateArr[i] + (date.month || 1);
- str += (this.sysres.getString(undefined, key + "-" + this.calName) || this.sysres.getString(undefined, key) ||
- this.sysres.getString(undefined, key.replace(/L/g,"M") + "-" + this.calName) || this.sysres.getString(undefined, key.replace(/L/g,"M")));
+ isLeap = date.cal.isLeapYear(date.year);
+ str += (isLeap ? this.sysres.getStringJS(undefined, key + "-leap" + "-" + this.calName) : false) ||
+ this.sysres.getStringJS(undefined, key + "-" + this.calName) ||
+ this.sysres.getStringJS(undefined, key);
break;
case 'E':
@@ -1416,8 +1422,11 @@ DateFmt.prototype = {
case 'ccc':
case 'cccc':
key = templateArr[i] + date.getDayOfWeek();
+ isLeap = date.cal.isLeapYear(date.year);
//console.log("finding " + key + " in the resources");
- str += (this.sysres.getString(undefined, key + "-" + this.calName) || this.sysres.getString(undefined, key));
+ str += (isLeap ? this.sysres.getStringJS(undefined, key + "-leap" + "-" + this.calName) : false) ||
+ this.sysres.getStringJS(undefined, key + "-" + this.calName) ||
+ this.sysres.getStringJS(undefined, key);
break;
case 'a':
@@ -1457,7 +1466,7 @@ DateFmt.prototype = {
break;
}
//console.log("finding " + key + " in the resources");
- str += (this.sysres.getString(undefined, key + "-" + this.calName) || this.sysres.getString(undefined, key));
+ str += (this.sysres.getStringJS(undefined, key + "-" + this.calName) || this.sysres.getStringJS(undefined, key));
break;
case 'B':
@@ -1486,7 +1495,7 @@ DateFmt.prototype = {
case 'G':
key = "G" + date.getEra();
- str += (this.sysres.getString(undefined, key + "-" + this.calName) || this.sysres.getString(undefined, key));
+ str += (this.sysres.getStringJS(undefined, key + "-" + this.calName) || this.sysres.getStringJS(undefined, key));
break;
case 'O':
diff --git a/js/lib/DateFmtInfo.js b/js/lib/DateFmtInfo.js
new file mode 100644
index 0000000000..63e1f2e5d0
--- /dev/null
+++ b/js/lib/DateFmtInfo.js
@@ -0,0 +1,1034 @@
+/*
+ * DateFmtInfo.js - Information about a date formatter
+ *
+ * Copyright © 2019, JEDLSoft
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// !data dateres
+
+var DateFmt = require("./DateFmt.js");
+
+var ilib = require("../index.js");
+var JSUtils = require("./JSUtils.js");
+var Locale = require("./Locale.js");
+var DateFactory = require("./DateFactory.js");
+var ResBundle = require("./ResBundle.js");
+var TimeZone = require("./TimeZone.js");
+var ISet = require("./ISet.js");
+
+/**
+ * @class
+ * Create a new date formatter info instance. This instance gives information about
+ * a particular date formatter that can be used by UI builders to construct
+ * input form elements based on the formatter.
+ *
+ * The options may contain any of the properties that are valid to create a date
+ * formatter (q.v.), plus the following:
+ *
+ *
+ * uiLocale - locale of the user interface. This may be different than
+ * the locale of the formatter which is given in the "locale" property. The uiLocale
+ * specifies the language for translations of things like names of months or days
+ * of the week, whereas the locale of the formatter specifies the actual date
+ * format, time zone, calendar, etc. of the formatter.
+ *
+ *
+ * @constructor
+ * @param {Object} options options governing the way this date formatter info
+ * instance works
+ */
+var DateFmtInfo = function(options) {
+ var sync = options && typeof(options.sync) === "boolean" ? options.sync : true;
+ if (sync) {
+ this.fmt = new DateFmt(options);
+ this._init(options);
+ } else {
+ var newOptions = {};
+ var callback = options.onLoad;
+ JSUtils.shallowCopy(options, newOptions);
+ newOptions.onLoad = ilib.bind(this, function(fmt) {
+ this.fmt = fmt;
+ this._init(options);
+ });
+ new DateFmt(newOptions);
+ }
+};
+
+DateFmtInfo.prototype = {
+ /**
+ * @private
+ */
+ _init: function(options) {
+ var locale, sync = true, callback, loadParams;
+
+ if (options) {
+ locale = options.uiLocale || options.locale;
+ sync = typeof(options.sync) === "boolean" ? options.sync : true;
+ callback = options.onLoad;
+ loadParams = options.loadParams;
+ }
+ var loc = this.fmt.locale;
+ if (locale) {
+ if (typeof(locale) === "string") {
+ locale = new Locale(locale);
+ }
+ locale = new Locale(locale.getLanguage(), loc.getRegion(), loc.getVariant(), loc.getScript());
+ }
+ new ResBundle({
+ locale: locale,
+ name: "dateres",
+ sync: sync,
+ loadParams: loadParams,
+ onLoad: ilib.bind(this, function (rb) {
+ this.rb = rb;
+ if (locale && locale.getLanguage() !== this.fmt.locale.getLanguage()) {
+ new ResBundle({
+ locale: locale,
+ name: "sysres",
+ sync: sync,
+ loadParams: loadParams,
+ onLoad: ilib.bind(this, function (rb) {
+ this.sysres = rb;
+ if (callback && typeof(callback) === "function") {
+ callback(this);
+ }
+ })
+ });
+ } else {
+ this.sysres = this.fmt.sysres;
+ if (callback && typeof(callback) === "function") {
+ callback(this);
+ }
+ }
+ })
+ });
+ },
+
+ /**
+ * Return the order of the year, month, and date components for the current locale.
+ *
+ * When implementing a date input widget in a UI, it would be useful to know what
+ * order to put the year, month, and date input fields so that it conforms to the
+ * user expectations for the locale. This method gives that order by returning a
+ * string that has a single "y", "m", and "d" character in it in the correct
+ * order.
+ *
+ * For example, the return value "ymd" means that this locale formats the year first,
+ * the month second, and the date third, and "mdy" means that the month is first,
+ * the date is second, and the year is third. Four of the 6 possible permutations
+ * of the three letters have at least one locale that uses that ordering, though some
+ * combinations are far more likely than others. The ones that are not used by any
+ * locales are "dym" and "myd", though new locales are still being added to
+ * CLDR frequently, and possible orderings cannot be predicted. Your code should
+ * support all 6 possibilities, just in case.
+ *
+ * @return {string} a string giving the date component order
+ */
+ getDateComponentOrder: function() {
+ return this.fmt.componentOrder;
+ },
+
+ /**
+ * @private
+ */
+ _getSysString: function (key) {
+ return (this.sysres.getStringJS(undefined, key + "-" + this.fmt.calName) || this.sysres.getStringJS(undefined, key)).toString();
+ },
+
+ /**
+ * Return the meridiems range in current locale.
+ * @return {Array.<{name:string,start:string,end:string}>} the range of available meridiems
+ */
+ getMeridiemsRange: function () {
+ var result;
+
+ switch (this.fmt.meridiems) {
+ case "chinese":
+ result = [
+ {
+ name: this._getSysString("azh0"),
+ start: "00:00",
+ end: "05:59"
+ },
+ {
+ name: this._getSysString("azh1"),
+ start: "06:00",
+ end: "08:59"
+ },
+ {
+ name: this._getSysString("azh2"),
+ start: "09:00",
+ end: "11:59"
+ },
+ {
+ name: this._getSysString("azh3"),
+ start: "12:00",
+ end: "12:59"
+ },
+ {
+ name: this._getSysString("azh4"),
+ start: "13:00",
+ end: "17:59"
+ },
+ {
+ name: this._getSysString("azh5"),
+ start: "18:00",
+ end: "20:59"
+ },
+ {
+ name: this._getSysString("azh6"),
+ start: "21:00",
+ end: "23:59"
+ }
+ ];
+ break;
+ case "ethiopic":
+ result = [
+ {
+ name: this._getSysString("a0-ethiopic"),
+ start: "00:00",
+ end: "05:59"
+ },
+ {
+ name: this._getSysString("a1-ethiopic"),
+ start: "06:00",
+ end: "06:00"
+ },
+ {
+ name: this._getSysString("a2-ethiopic"),
+ start: "06:01",
+ end: "11:59"
+ },
+ {
+ name: this._getSysString("a3-ethiopic"),
+ start: "12:00",
+ end: "17:59"
+ },
+ {
+ name: this._getSysString("a4-ethiopic"),
+ start: "18:00",
+ end: "23:59"
+ }
+ ];
+ break;
+ default:
+ result = [
+ {
+ name: this._getSysString("a0"),
+ start: "00:00",
+ end: "11:59"
+ },
+ {
+ name: this._getSysString("a1"),
+ start: "12:00",
+ end: "23:59"
+ }
+ ];
+ break;
+ }
+
+ return result;
+ },
+
+ /**
+ * Returns an array of the months of the year, formatted to the optional length specified.
+ * i.e. ...getMonthsOfYear() OR ...getMonthsOfYear({length: "short"})
+ *
+ * The options parameter may contain any of the following properties:
+ *
+ *
+ * length - length of the names of the months being sought. This may be one of
+ * "short", "medium", "long", or "full"
+ * date - retrieve the names of the months in the date of the given date
+ * year - retrieve the names of the months in the given year. In some calendars,
+ * the months have different names depending if that year is a leap year or not.
+ *
+ *
+ * @param {Object=} options an object-literal that contains any of the above properties
+ * @return {Array} an array of the names of all of the months of the year in the current calendar
+ */
+ getMonthsOfYear: function(options) {
+ var length = (options && options.length) || this.fmt.getLength(),
+ template = DateFmt.monthNameLenMap[length],
+ months = [undefined],
+ date,
+ monthCount;
+
+ if (options) {
+ if (options.date) {
+ date = DateFactory._dateToIlib(options.date);
+ }
+
+ if (options.year) {
+ date = DateFactory({year: options.year, month: 1, day: 1, type: this.fmt.cal.getType()});
+ }
+ }
+
+ if (!date) {
+ date = DateFactory({
+ calendar: this.fmt.cal.getType()
+ });
+ }
+
+ monthCount = this.fmt.cal.getNumMonths(date.getYears());
+ for (var i = 1; i <= monthCount; i++) {
+ months[i] = this.sysres.getStringJS(this.fmt._getTemplate(template + i, this.fmt.cal.getType())).toString();
+ }
+ return months;
+ },
+
+ /**
+ * Returns an array of the days of the week, formatted to the optional length specified.
+ * i.e. ...getDaysOfWeek() OR ...getDaysOfWeek({length: "short"})
+ *
+ * The options parameter may contain any of the following properties:
+ *
+ *
+ * length - length of the names of the months being sought. This may be one of
+ * "short", "medium", "long", or "full"
+ *
+ * @param {Object=} options an object-literal that contains one key
+ * "length" with the standard length strings
+ * @return {Array} an array of all of the names of the days of the week
+ */
+ getDaysOfWeek: function(options) {
+ var length = (options && options.length) || this.fmt.getLength(),
+ template = DateFmt.weekDayLenMap[length],
+ days = [];
+ for (var i = 0; i < 7; i++) {
+ days[i] = this.sysres.getStringJS(this.fmt._getTemplate(template + i, this.fmt.cal.getType())).toString();
+ }
+ return days;
+ },
+
+ /**
+ * @private
+ */
+ _mapFormatInfo: function(year, RB, tzinfo) {
+ function sequence(start, end, pad) {
+ var constraint = [];
+ for (var i = start; i <= end; i++) {
+ constraint.push(pad ? JSUtils.pad(i, 2) : String(i));
+ }
+ return constraint;
+ }
+
+ var isLeap = this.fmt.cal.isLeapYear(year);
+ var dateStr = RB.getStringJS("Day"); // i18n: date input form label for the day of the month field
+ var yearStr = RB.getStringJS("Year"); // i18n: date input form label for the year field
+ var monthStr = RB.getStringJS("Month"); // i18n: date input form label for the months field
+ var hourStr = RB.getStringJS("Hour"); // i18n: date input form label for the hours field
+ var minuteStr = RB.getStringJS("Minute"); // i18n: date input form label for the minutes field
+ var secondStr = RB.getStringJS("Second"); // i18n: date input form label for the seconds field
+ var milliStr = RB.getStringJS("Millisecond"); // i18n: date input form label for the milliseconds field
+ var woyStr = RB.getStringJS("Week of Year"); // i18n: date input form label for a week of the year field
+ var doyStr = RB.getStringJS("Day of Year"); // i18n: date input form label for the day of the year field
+ var ret, i;
+
+ return this.fmt.templateArr.map(ilib.bind(this, function(component) {
+ switch (component) {
+ case 'd':
+ ret = {
+ component: "day",
+ label: dateStr,
+ placeholder: RB.getStringJS("D"), // i18n: date format placeholder string for 1 digit date
+ constraint: {},
+ validation: "\\d{1,2}"
+ };
+ var months = this.fmt.cal.getNumMonths(year);
+ for (i = 1; i <= months; i++) {
+ ret.constraint[String(i)] = [1, this.fmt.cal.getMonLength(i, year)];
+ }
+ return ret;
+
+ case 'dd':
+ ret = {
+ component: "day",
+ label: dateStr,
+ placeholder: RB.getStringJS("DD"), // i18n: date format placeholder string for 2 digit date
+ constraint: {},
+ validation: "\\d{1,2}"
+ };
+ var months = this.fmt.cal.getNumMonths(year);
+ for (i = 1; i <= months; i++) {
+ ret.constraint[String(i)] = sequence(1, this.fmt.cal.getMonLength(i, year));
+ }
+ return ret;
+
+ case 'yy':
+ return {
+ component: "year",
+ label: yearStr,
+ placeholder: RB.getStringJS("YY"), // i18n: date format placeholder string for 2 digit year
+ constraint: "\\d{2}",
+ validation: "\\d{2}"
+ };
+
+ case 'yyyy':
+ return {
+ component: "year",
+ label: yearStr,
+ placeholder: RB.getStringJS("YYYY"), // i18n: date format placeholder string for 4 digit year
+ constraint: "\\d{4}",
+ validation: "\\d{4}"
+ };
+
+ case 'M':
+ ret = {
+ component: "month",
+ label: monthStr,
+ placeholder: RB.getStringJS("M"), // i18n: date format placeholder string for 1 digit month
+ constraint: [1, this.fmt.cal.getNumMonths(year)],
+ validation: "\\d{1,2}"
+ };
+ return ret;
+
+ case 'MM':
+ ret = {
+ component: "month",
+ label: monthStr,
+ placeholder: RB.getStringJS("MM"), // i18n: date format placeholder string for 2 digit month
+ constraint: sequence(1, this.fmt.cal.getNumMonths(year)),
+ validation: "\\d{2}"
+ };
+ return ret;
+
+ case 'h':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("H"), // i18n: date format placeholder string for 1 digit hour
+ constraint: ["12"].concat(sequence(1, 11)),
+ validation: "\\d{1,2}"
+ };
+
+ case 'hh':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("HH"), // i18n: date format placeholder string for 2 digit hour,
+ constraint: ["12"].concat(sequence(1, 11, true)),
+ validation: "\\d{2}"
+ };
+
+
+ case 'K':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("H"), // i18n: date format placeholder string for 1 digit hour
+ constraint: sequence(0, 11),
+ validation: "\\d{1,2}"
+ };
+
+ case 'KK':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("HH"), // i18n: date format placeholder string for 2 digit hour,
+ constraint: sequence(0, 11, true),
+ validation: "\\d{2}"
+ };
+
+ case 'H':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("H"), // i18n: date format placeholder string for 1 digit hour
+ constraint: [0, 23],
+ validation: "\\d{1,2}"
+ };
+
+ case 'HH':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("HH"), // i18n: date format placeholder string for 2 digit hour
+ constraint: sequence(0, 23, true),
+ validation: "\\d{2}"
+ };
+
+ case 'k':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("H"), // i18n: date format placeholder string for 1 digit hour
+ constraint: ["24"].concat(sequence(0, 23)),
+ validation: "\\d{1,2}"
+ };
+
+ case 'kk':
+ return {
+ component: "hour",
+ label: hourStr,
+ placeholder: RB.getStringJS("H"), // i18n: date format placeholder string for 1 digit hour
+ constraint: ["24"].concat(sequence(0, 23, true)),
+ validation: "\\d{2}"
+ };
+
+ case 'm':
+ return {
+ component: "minute",
+ label: minuteStr,
+ placeholder: RB.getStringJS("mm"), // i18n: date format placeholder string for 2 digit minute
+ constraint: [0, 59],
+ validation: "\\d{1,2}"
+ };
+
+ case 'mm':
+ return {
+ component: "minute",
+ label: minuteStr,
+ placeholder: RB.getStringJS("mm"), // i18n: date format placeholder string for 2 digit minute
+ constraint: sequence(0, 59, true),
+ validation: "\\d{2}"
+ };
+
+ case 's':
+ return {
+ component: "second",
+ label: secondStr,
+ placeholder: RB.getStringJS("ss"), // i18n: date format placeholder string for 2 digit second
+ constraint: [0, 59],
+ validation: "\\d{1,2}"
+ };
+
+ case 'ss':
+ return {
+ component: "second",
+ label: secondStr,
+ placeholder: RB.getStringJS("ss"), // i18n: date format placeholder string for 2 digit second
+ constraint: sequence(0, 59, true),
+ validation: "\\d{2}"
+ };
+
+ case 'S':
+ return {
+ component: "millisecond",
+ label: milliStr,
+ placeholder: RB.getStringJS("ms"), // i18n: date format placeholder string for 2 digit millisecond
+ constraint: [0, 999],
+ validation: "\\d{1,3}"
+ };
+
+ case 'SSS':
+ return {
+ component: "millisecond",
+ label: milliStr,
+ placeholder: RB.getStringJS("ms"), // i18n: date format placeholder string for 2 digit millisecond
+ constraint: sequence(0, 999, true),
+ validation: "\\d{3}"
+ };
+
+ case 'N':
+ case 'NN':
+ case 'MMM':
+ case 'MMMM':
+ case 'L':
+ case 'LL':
+ case 'LLL':
+ case 'LLLL':
+ return {
+ component: "month",
+ label: monthStr,
+ constraint: (ilib.bind(this, function() {
+ var ret = [];
+ var months = this.fmt.cal.getNumMonths(year);
+ var isLeap = this.fmt.cal.isLeapYear(year);
+ for (i = 1; i <= months; i++) {
+ var key = component + i;
+ ret.push({
+ label:
+ (isLeap ? this.sysres.getStringJS(undefined, key + "-leap" + "-" + this.fmt.calName) : false) ||
+ this.sysres.getStringJS(undefined, key + "-" + this.fmt.calName) ||
+ this.sysres.getStringJS(undefined, key),
+ value: i
+ });
+ }
+ return ret;
+ }))()
+ };
+
+ case 'E':
+ case 'EE':
+ case 'EEE':
+ case 'EEEE':
+ case 'c':
+ case 'cc':
+ case 'ccc':
+ case 'cccc':
+ return {
+ component: "dayofweek",
+ label: RB.getStringJS("Day of Week"), // i18n: date input form label for the day of the week field
+ value: ilib.bind(this, function(date) {
+ var d = DateFactory._dateToIlib(date).getJSDate();
+ var key = component.replace(/c/g, 'E') + d.getDay();
+ if (this.fmt.calName !== "gregorian") {
+ key += '-' + this.fmt.calName;
+ }
+ return this.sysres.getStringJS(undefined, key);
+ })
+ };
+ break;
+
+ case 'a':
+ var ret = {
+ component: "meridiem",
+ label: RB.getStringJS("AM/PM"), // i18n: date input form label for the meridiem field
+ constraint: []
+ };
+ switch (this.fmt.meridiems) {
+ case "chinese":
+ for (var i = 0; i < 7; i++) {
+ var key = "azh" + i;
+ ret.constraint.push(this.sysres.getStringJS(undefined, key + "-" + this.fmt.calName) || this.sysres.getStringJS(undefined, key));
+ }
+ break;
+ case "ethiopic":
+ for (var i = 0; i < 7; i++) {
+ var key = "a" + i + "-ethiopic";
+ ret.constraint.push(this.sysres.getStringJS(undefined, key + "-" + this.fmt.calName) || this.sysres.getStringJS(undefined, key));
+ }
+ break;
+ default:
+ ret.constraint.push(this.sysres.getStringJS(undefined, "a0-" + this.fmt.calName) || this.sysres.getStringJS(undefined, "a0"));
+ ret.constraint.push(this.sysres.getStringJS(undefined, "a1-" + this.fmt.calName) || this.sysres.getStringJS(undefined, "a1"));
+ break;
+ }
+ return ret;
+
+ case 'w':
+ return {
+ label: woyStr,
+ value: function(date) {
+ return date.getDayOfYear();
+ }
+ };
+
+ case 'ww':
+ return {
+ label: woyStr,
+ value: function(date) {
+ var temp = date.getWeekOfYear();
+ return JSUtils.pad(temp, 2)
+ }
+ };
+
+ case 'D':
+ return {
+ label: doyStr,
+ value: function(date) {
+ return date.getDayOfYear();
+ }
+ };
+
+ case 'DD':
+ return {
+ label: doyStr,
+ value: function(date) {
+ var temp = date.getDayOfYear();
+ return JSUtils.pad(temp, 2)
+ }
+ };
+
+ case 'DDD':
+ return {
+ label: doyStr,
+ value: function(date) {
+ var temp = date.getDayOfYear();
+ return JSUtils.pad(temp, 3)
+ }
+ };
+
+ case 'W':
+ return {
+ label: RB.getStringJS("Week of Month"), // i18n: date input form label for the week of the month field
+ value: function(date) {
+ return date.getWeekOfMonth();
+ }
+ };
+
+ case 'G':
+ var ret = {
+ component: "era",
+ label: RB.getStringJS("Era"), // i18n: date input form label for the era field
+ constraint: []
+ };
+ ret.constraint.push(this.sysres.getStringJS(undefined, "G0-" + this.fmt.calName) || this.sysres.getStringJS(undefined, "G0"));
+ ret.constraint.push(this.sysres.getStringJS(undefined, "G1-" + this.fmt.calName) || this.sysres.getStringJS(undefined, "G1"));
+ return ret;
+
+ case 'z': // general time zone
+ case 'Z': // RFC 822 time zone
+ return {
+ component: "timezone",
+ label: RB.getStringJS("Time Zone"), // i18n: date input form label for the time zone field
+ constraint: tzinfo
+ };
+
+ default:
+ return {
+ label: component.replace(/'/g, "")
+ };
+ }
+ }));
+ },
+
+ /**
+ * Return information about the date format that can be used
+ * by UI frameworks to display a locale-sensitive input form.
+ *
+ * The options parameter is an object that can contain any of
+ * the following properties:
+ *
+ *
+ * locale - the locale to translate the labels
+ * to. If not given, the locale of the formatter will be used.
+ * The locale of the formatter specifies the format of the
+ * date input and which components are available and in what
+ * order, whereas this locale property only specifies the language
+ * used for the labels.
+ *
+ * year - the year for which the formats are being sought.
+ * For some calendars such as the Hebrew calendar, the number of
+ * and the length of the months depends upon the year. Even in the
+ * Gregorian calendar, the length of February changes in leap
+ * years, though the number of months or their names do not
+ * change. If not specified, the default is the current year.
+ *
+ * sync - if true, this method should load the data
+ * synchronously. If false, load the data asynchronously and
+ * call the onLoad callback function when it is done. The onLoad
+ * parameter must be specified in order to receive the data.
+ *
+ * onLoad - a callback function to call when the data is fully
+ * loaded. When the onLoad option is given, this method will attempt to
+ * load any missing locale data using the ilib loader callback.
+ * When this method is done (even if the data is already preassembled), the
+ * onLoad function is called with the results as a parameter, so this
+ * callback can be used with preassembled or dynamic data loading or a
+ * mix of the two.
+ *
+ * loadParams - an object containing parameters to pass to the
+ * loader callback function when locale data is missing. The parameters are not
+ * interpretted or modified in any way. They are simply passed along. The object
+ * may contain any property/value pairs as long as the calling code is in
+ * agreement with the loader callback function as to what those parameters mean.
+ *
+ *
+ * The results object returned by this method or passed to the onLoad
+ * callback is an array of date
+ * format components. Each format component is an object
+ * that contains information that can be used to display
+ * a field in an input form.
+ * The list of possible properties on each component object are:
+ *
+ *
+ * component - if this component describes a part
+ * of the date format which can be entered by the user (as opposed
+ * to the fixed parts which cannot), then this property gives
+ * the name of that component when the value is used
+ * with the DateFactory() function to construct an IDate instance.
+ * For example, if the value of "component" is "year",
+ * then the value of the input field can be used as the "year"
+ * property when calling DateFactory().
+ * label - a localized text to display for this
+ * component as a label. The text is localized to the given
+ * locale. If a locale is not given, then it uses the locale
+ * of the formatter.
+ * placeholder - the localized placeholder text to
+ * display in a free-form, empty text input field, which gives
+ * the user a hint as to what to enter in that field. The text
+ * is localized to the given
+ * locale. If a locale is not given, then it uses the locale
+ * of the formatter.
+ * validation - a regular expression or function
+ * that validates the input value of a free-form text input
+ * field. When the validation property is a regular expression,
+ * the expression matches when the value of the field is valid.
+ * When the validation property is a function, the function
+ * would take a single parameter which is the value of
+ * the input field. It returns a boolean value: true if the
+ * input is valid, and false otherwise.
+ * constraint - a rule that describes the constraints
+ * on valid values for this component. This is intended to be
+ * used with input fields such as drop-down boxes.
+ * value - a function that this the value of
+ * a calculated field. (See the description below.)
+ *
+ *
+ * Field separators such as slashes or dots, etc., are given
+ * as a object with no "component" property. They only contain
+ * a "label" property with a string value. A user interface
+ * may choose to use these purely formatting components or ignore
+ * them as needed.
+ *
+ * User interfaces can construct two different types of input
+ * forms: constrained or free-form. In a constrained form,
+ * components such as the month are displayed as
+ * as a drop-down box containing a fixed list of month names.
+ * The user may only choose from that list and it is therefore
+ * impossible to choose an invalid value. In a free-form
+ * form, the user is presented with text input fields where
+ * they can type whatever they want. The resulting value should
+ * be validated using the validation rules before submitting
+ * the form. The getFormatInfo
+ * method returns information that can be used to create either
+ * type of form. It is up to the caller to
+ * decide which type of form to present to the user.
+ *
+ * For a constrained form element, the input value
+ * must conform to a particular pattern, range, or a fixed
+ * list of possible values. The rule for this is given in
+ * the "constraint" property.
+ * The values of the constraint property can be one of the
+ * following types:
+ *
+ *
+ * array[2]<number> - an array of size 2 of numbers
+ * that gives the start and end of a numeric range. The input must
+ * be between the start and end of the range, inclusive.
+ * array[2]<string> - an array of strings gives
+ * the exact range of values possible for this field. The input must
+ * be one of these values. This is mainly intended for use in
+ * drop-down boxes. The value of the chosen element is the value
+ * that should be returned for the field.
+ * array<object> - an array of valid string values
+ * given as objects that have "label" and "value" properties. The
+ * label is intended to be displayed to the user and the value
+ * is to be used to construct the new date object when the
+ * user has finished selecting the components and the form is
+ * being evaluated or submitted.
+ *
+ *
+ * For a free-form form, the user interface must validate the
+ * values that the user has typed into the text field. To aid
+ * with this, this method returns a "validation" property which
+ * contains either a regular expression or a function. The
+ * regular expression tests whether or not what the user has
+ * entered is valid. If the validation property is set to
+ * a function, this function would take a single
+ * parameter which is the text value of the input field, and
+ * it returns a boolean value: true if the input is valid,
+ * and false otherwise. If it does not make sense for a
+ * particular date format component to be free-form, such
+ * as the "AM/PM" choice for a meridiem, then the validation
+ * property will be left off. Only the given choices are
+ * valid. UI builders should only allow
+ * free-form fields for those components that have a
+ * "validation" property. Otherwise, use a constrained
+ * input form element instead.
+ *
+ * Some date format components do not represent values that
+ * a user may enter, but instead values that are calculated
+ * based on other date format components. For example, the
+ * day of the week is a property that is calculated based
+ * on the date the user has entered. It would not
+ * make sense for the user to be able to choose a day of
+ * the week that does not correspond to the day, month, and
+ * year they have already chosen. To handle calculated
+ * date format components, this method returns a "value"
+ * property which is a function which returns
+ * the calculated value of the field. Its parameter is a date
+ * object that has been created from the other date format
+ * components. Its single parameter is an object that contains
+ * the other date input components, similar to what you might
+ * pass to the DateFactory function.
+ *
+ * @example Here is what the result would look like for a US short
+ * date/time format for a leap year. This includes the components
+ * of day of the week, date, month, year, hour, minute, and meridiem:
+ *
+ *
+ * [
+ * {
+ * "label": "Day of Week", // optional label
+ * "value": function(date) { returns the calculated, localized day of week name }
+ * },
+ * {
+ * "label": " " // fixed field (optionally displayed in the UI)
+ * },
+ * {
+ * "component": "month", // property name to use when calling DateFactory() for this field
+ * "label": "Month", // label describing this field, in this case translated to English/US
+ * "placeholder": "M", // the placeholder text for this field
+ * "constraint": [1, 12], // constraint rules for a drop-down box for the month
+ * "validation": "\\d{1,2}" // validation rule for a free-form text input
+ * },
+ * {
+ * "label": "/" // fixed field (optionally displayed in the UI)
+ * },
+ * {
+ * "component": "day",
+ * "label": "Date",
+ * "placeholder": "DD",
+ * "constraint": {
+ * "1": [1, 31], // range from 1 to 31 inclusive
+ * "2": [1, 29],
+ * "3": [1, 31],
+ * "4": [1, 30],
+ * "5": [1, 31],
+ * "6": [1, 30],
+ * "7": [1, 31],
+ * "8": [1, 31],
+ * "9": [1, 30],
+ * "10": [1, 31],
+ * "11": [1, 30],
+ * "12": [1, 31]
+ * },
+ * "validation": "\\d{1,2}"
+ * },
+ * {
+ * "label": "/"
+ * },
+ * {
+ * "component": "year",
+ * "label": "Year",
+ * "placeholder": "YYYY",
+ * "validation": "\\d{4}"
+ * },
+ * {
+ * "label": " at "
+ * },
+ * {
+ * "component": "hour",
+ * "label": "Hour",
+ * "placeholder": "H",
+ * "constraint": [1, 12],
+ * "validation": "\\d{1,2}"
+ * },
+ * {
+ * "label": ":"
+ * },
+ * {
+ * "component": "minute",
+ * "label": "Minute",
+ * "constraint": [
+ * "00", // note that these are strings so that they can be zero-padded
+ * "01",
+ * "02",
+ * "03",
+ * "04",
+ * "05",
+ * "06",
+ * "07",
+ * "08",
+ * "09",
+ * "10",
+ * "11",
+ * ...
+ * "59"
+ * ],
+ * "placeholder": "mm",
+ * "validation": "\\d{2}"
+ * },
+ * {
+ * "label": " "
+ * },
+ * {
+ * "component": "meridiem",
+ * "label": "AM/PM",
+ * "placeholder": "AM/PM",
+ * "constraint": ["AM", "PM"]
+ * }
+ * ]
+ *
+ *
+ * Note that the "minute" component comes with a preformatted list of values
+ * as strings, even though the minute is really a number. The preformatting
+ * ensures that the leading zero is not lost for minutes less than 10.
+ *
+ * @example
Example of calling the getFormatInfo method
+ *
+ * // the DateFmt should be created with the locale of the date you
+ * // would like the user to enter.
+ * new DateFmt({
+ * locale: 'nl-NL', // for dates in the Netherlands
+ * year: 2019,
+ * onLoad: ilib.bind(this, function(fmt) {
+ * // The following is the locale of the UI you would like to see the labels
+ * // like "Year" and "Minute" translated to. In this example, we
+ * // are showing an input form for Dutch dates, but the labels are
+ * // written in US English.
+ * fmt.getFormatInfo({
+ * locale: "en-US",
+ * sync: true,
+ * callback: ilib.bind(this, function(components) {
+ * // here you should iterate through the component array and dynamically create the input
+ * // elements with the given labels and placeholders and such, and install
+ * // the appropriate validators
+ * }));
+ * })
+ * });
+ *
+ * @param {Object} options option to control this function. (See the description
+ * above.)
+ * @returns {Array.} An array of date components
+ */
+ getFormatInfo: function(options) {
+ var locale, sync = true, callback, loadParams, year;
+
+ if (options) {
+ sync = !!options.sync;
+ callback = options.onLoad;
+ loadParams = options.loadParams;
+ year = options.year;
+ }
+
+ if (!year) {
+ var now = DateFactory({
+ type: this.fmt.calName
+ });
+ year = now.getYear();
+ }
+
+ var info, zone = false;
+ for (var i = 0; i < this.fmt.templateArr.length; i++) {
+ if (this.fmt.templateArr[i] === "z" || this.fmt.templateArr[i] === "Z") {
+ zone = true;
+ break;
+ }
+ }
+
+ if (zone) {
+ TimeZone.getAvailableIds(undefined, sync, ilib.bind(this, function(tzinfo) {
+ var set = new ISet(tzinfo);
+ set.add("Etc/UTC");
+ set.add("Etc/GMT");
+ for (var j = 1; j < 13; j++) {
+ set.add("Etc/GMT+" + j);
+ set.add("Etc/GMT-" + j);
+ }
+ set.add("Etc/GMT-13");
+ set.add("Etc/GMT-14");
+
+ info = this._mapFormatInfo(year, this.rb, set.asArray().sort());
+ if (callback && typeof(callback) === "function") {
+ callback(info);
+ }
+ }));
+ } else {
+ info = this._mapFormatInfo(year, this.rb);
+ if (callback && typeof(callback) === "function") {
+ callback(info);
+ }
+ }
+
+ return info;
+ }
+};
+
+module.exports = DateFmtInfo;
diff --git a/js/lib/HebrewCal.js b/js/lib/HebrewCal.js
index 3e6accf474..b861fda9da 100644
--- a/js/lib/HebrewCal.js
+++ b/js/lib/HebrewCal.js
@@ -177,9 +177,13 @@ HebrewCal.prototype.lastDayOfMonth = function(month, year) {
* where 1=first month, 2=second month, etc.
*
* @param {number} year a year for which the number of months is sought
+ * @param {boolean} leap if the number of months is explicitly needed for a leap year,
+ * set this parameter to true. The year will be ignored in this case.
+ * @returns {number} the number of months in the given year or type of year
*/
-HebrewCal.prototype.getNumMonths = function(year) {
- return this.isLeapYear(year) ? 13 : 12;
+HebrewCal.prototype.getNumMonths = function(year, leap) {
+ var isLeap = typeof(leap) === "boolean" ? leap : this.isLeapYear(year);
+ return isLeap ? 13 : 12;
};
/**
diff --git a/js/lib/ilib-unpack.js b/js/lib/ilib-unpack.js
index ddbd7af6a5..71d4333c88 100644
--- a/js/lib/ilib-unpack.js
+++ b/js/lib/ilib-unpack.js
@@ -120,7 +120,8 @@ var exportClassesPublic = [
"AlphabeticIndex",
"TimeZone",
"Currency",
- "DigitalSpeedUnit"
+ "DigitalSpeedUnit",
+ "DateFmtInfo"
];
if (top) {
diff --git a/js/lib/metafiles/ilib-demo-webpack.js b/js/lib/metafiles/ilib-demo-webpack.js
index 160dc4f558..808a66f1c6 100644
--- a/js/lib/metafiles/ilib-demo-webpack.js
+++ b/js/lib/metafiles/ilib-demo-webpack.js
@@ -48,6 +48,7 @@ ilib.INumber = require("../INumber.js");
ilib.NumFmt = require("../NumFmt.js");
ilib.JulianDay = require("../JulianDay.js");
ilib.DateFmt = require("../DateFmt.js");
+ilib.DateFmtInfo = require("../DateFmtInfo.js");
ilib.Calendar = require("../Calendar.js");
ilib.CalendarFactory = require("../CalendarFactory.js");
ilib.Utils = require("../Utils.js");
diff --git a/js/lib/metafiles/ilib-full-webpack.js b/js/lib/metafiles/ilib-full-webpack.js
index f58bdc1630..4d1eb2bf7c 100644
--- a/js/lib/metafiles/ilib-full-webpack.js
+++ b/js/lib/metafiles/ilib-full-webpack.js
@@ -47,6 +47,7 @@ ilib.INumber = require("../INumber.js");
ilib.NumFmt = require("../NumFmt.js");
ilib.JulianDay = require("../JulianDay.js");
ilib.DateFmt = require("../DateFmt.js");
+ilib.DateFmtInfo = require("../DateFmtInfo.js");
ilib.Calendar = require("../Calendar.js");
ilib.CalendarFactory = require("../CalendarFactory.js");
ilib.Utils = require("../Utils.js");
diff --git a/js/lib/metafiles/ilib-ut-webpack.js b/js/lib/metafiles/ilib-ut-webpack.js
index f7645ebb6c..865985b093 100644
--- a/js/lib/metafiles/ilib-ut-webpack.js
+++ b/js/lib/metafiles/ilib-ut-webpack.js
@@ -48,6 +48,7 @@ ilib.INumber = require("../INumber.js");
ilib.NumFmt = require("../NumFmt.js");
ilib.JulianDay = require("../JulianDay.js");
ilib.DateFmt = require("../DateFmt.js");
+ilib.DateFmtInfo = require("../DateFmtInfo.js");
ilib.Calendar = require("../Calendar.js");
ilib.CalendarFactory = require("../CalendarFactory.js");
ilib.Utils = require("../Utils.js");
diff --git a/js/test/date/testMeridiems.js b/js/test/date/testMeridiems.js
index e6c282596c..7182806327 100644
--- a/js/test/date/testMeridiems.js
+++ b/js/test/date/testMeridiems.js
@@ -1,5 +1,5 @@
/*
- * testMeridiems.js - test the meridiems data
+ * testMeridiems.js
*
* Copyright © 2019-2023, JEDLSoft
*
@@ -25,2123 +25,2336 @@ if (ilib._getPlatform() === "nodejs" && ilib._dyndata && ilib._dyncode) {
var path = require("path");
}
-if (typeof(DateFmt) === "undefined") {
- var DateFmt = require("../../lib/DateFmt.js");
+if (typeof(DateFmtInfo) === "undefined") {
+ var DateFmtInfo = require("../../lib/DateFmtInfo.js");
}
+
module.exports.testmeridiems = {
testMeridiem_ar_EG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-EG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-EG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_IQ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-IQ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-IQ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_MA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-MA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-MA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_as_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"as-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "as-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "পূৰ্বাহ্ন");
- test.equal(fmt[1].name, "অপৰাহ্ন");
+ test.equal(range[0].name, "পূৰ্বাহ্ন");
+ test.equal(range[1].name, "অপৰাহ্ন");
test.done();
},
testMeridiem_bg_BG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"bg-BG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "bg-BG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "пр.об.");
- test.equal(fmt[1].name, "сл.об.");
+ test.equal(range[0].name, "пр.об.");
+ test.equal(range[1].name, "сл.об.");
test.done();
},
testMeridiem_bn_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"bn-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "bn-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_bs_Latn_BA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"bs-Latn-BA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "bs-Latn-BA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "prijepodne");
- test.equal(fmt[1].name, "popodne");
+ test.equal(range[0].name, "prijepodne");
+ test.equal(range[1].name, "popodne");
test.done();
},
testMeridiem_bs_Latn_ME: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"bs-Latn-ME"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "bs-Latn-ME"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "prijepodne");
- test.equal(fmt[1].name, "popodne");
+ test.equal(range[0].name, "prijepodne");
+ test.equal(range[1].name, "popodne");
test.done();
},
testMeridiem_cs_CZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"cs-CZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "cs-CZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "dop.");
- test.equal(fmt[1].name, "odp.");
+ test.equal(range[0].name, "dop.");
+ test.equal(range[1].name, "odp.");
test.done();
},
testMeridiem_da_DK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"da-DK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "da-DK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_de_AT: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"de-AT"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "de-AT"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM"); //// CLDR 34 change
- test.equal(fmt[1].name, "PM"); //// CLDR 34 change
+ test.equal(range[0].name, "AM"); //// CLDR 34 change
+ test.equal(range[1].name, "PM"); //// CLDR 34 change
test.done();
},
testMeridiem_de_CH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"de-CH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "de-CH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_de_DE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"de-DE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "de-DE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_de_LU: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"de-LU"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "de-LU"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_el_CY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"el-CY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "el-CY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "π.μ.");
- test.equal(fmt[1].name, "μ.μ.");
+ test.equal(range[0].name, "π.μ.");
+ test.equal(range[1].name, "μ.μ.");
test.done();
},
testMeridiem_el_GR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"el-GR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "el-GR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "π.μ.");
- test.equal(fmt[1].name, "μ.μ.");
+ test.equal(range[0].name, "π.μ.");
+ test.equal(range[1].name, "μ.μ.");
test.done();
},
testMeridiem_en_AM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-AM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-AM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_AU: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-AU"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-AU"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_AZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-AZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-AZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_CA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-CA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-CA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_en_GB: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-GB"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-GB"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_GH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-GH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-GH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_HK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-HK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-HK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_IE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-IE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-IE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_en_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_IS: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-IS"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-IS"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_JP: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-JP"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-JP"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_KE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-KE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-KE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_KR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-KR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-KR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_LK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-LK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-LK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_MM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-MM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-MM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_MW: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-MW"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-MW"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_MY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-MY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-MY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_NG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-NG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-NG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_NZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-NZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-NZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_PH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-PH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-PH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_PR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-PR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-PR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_SG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-SG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-SG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_US: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-US"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-US"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_UG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-UG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-UG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_ZA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-ZA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-ZA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_ZM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-ZM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-ZM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_es_AR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-AR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-AR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_BO: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-BO"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-BO"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_CL: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-CL"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-CL"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_CO: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-CO"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-CO"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_DO: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-DO"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-DO"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_EC: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-EC"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-EC"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_ES: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-ES"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-ES"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_GT: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-GT"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-GT"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_HN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-HN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-HN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_MX: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-MX"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-MX"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_NI: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-NI"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-NI"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_PA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-PA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-PA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_PE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-PE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-PE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_PR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-PR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-PR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_PY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-PY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-PY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_SV: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-SV"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-SV"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_US: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-US"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-US"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_UY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-UY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-UY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_VE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-VE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-VE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_et_EE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"et-EE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "et-EE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fa_AF: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fa-AF"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fa-AF"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "قبلازظهر");
- test.equal(fmt[1].name, "بعدازظهر");
+ test.equal(range[0].name, "قبلازظهر");
+ test.equal(range[1].name, "بعدازظهر");
test.done();
},
testMeridiem_fa_IR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fa-IR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fa-IR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "قبلازظهر");
- test.equal(fmt[1].name, "بعدازظهر");
+ test.equal(range[0].name, "قبلازظهر");
+ test.equal(range[1].name, "بعدازظهر");
test.done();
},
testMeridiem_fi_FI: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fi-FI"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fi-FI"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ap.");
- test.equal(fmt[1].name, "ip.");
+ test.equal(range[0].name, "ap.");
+ test.equal(range[1].name, "ip.");
test.done();
},
testMeridiem_fr_BE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-BE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-BE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_CA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-CA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-CA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_fr_CH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-CH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-CH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_FR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-FR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-FR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_LU: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-LU"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-LU"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ga_IE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ga-IE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ga-IE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "r.n.");
- test.equal(fmt[1].name, "i.n.");
+ test.equal(range[0].name, "r.n.");
+ test.equal(range[1].name, "i.n.");
test.done();
},
testMeridiem_gu_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"gu-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "gu-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_he_IL: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"he-IL"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "he-IL"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "לפנה״צ");
- test.equal(fmt[1].name, "אחה״צ");
+ test.equal(range[0].name, "לפנה״צ");
+ test.equal(range[1].name, "אחה״צ");
test.done();
},
testMeridiem_hi_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"hi-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "hi-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'am');
- test.equal(fmt[1].name, 'pm');
+ test.equal(range[0].name, 'am');
+ test.equal(range[1].name, 'pm');
test.done();
},
testMeridiem_hr_HR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"hr-HR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "hr-HR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_hr_ME: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"hr-ME"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "hr-ME"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_hr_HU: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"hr-HU"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "hr-HU"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_id_ID: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"id-ID"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "id-ID"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_is_IS: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"is-IS"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "is-IS"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "f.h.");
- test.equal(fmt[1].name, "e.h.");
+ test.equal(range[0].name, "f.h.");
+ test.equal(range[1].name, "e.h.");
test.done();
},
testMeridiem_it_CH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"it-CH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "it-CH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_it_IT: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"it-IT"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "it-IT"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ja_JP: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ja-JP"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ja-JP"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "午前");
- test.equal(fmt[1].name, "午後");
+ test.equal(range[0].name, "午前");
+ test.equal(range[1].name, "午後");
test.done();
},
testMeridiem_kk_KZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"kk-KZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "kk-KZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_kn_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"kn-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "kn-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ಪೂರ್ವಾಹ್ನ");
- test.equal(fmt[1].name, "ಅಪರಾಹ್ನ");
+ test.equal(range[0].name, "ಪೂರ್ವಾಹ್ನ");
+ test.equal(range[1].name, "ಅಪರಾಹ್ನ");
test.done();
},
testMeridiem_ko_KR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ko-KR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ko-KR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "오전");
- test.equal(fmt[1].name, "오후");
+ test.equal(range[0].name, "오전");
+ test.equal(range[1].name, "오후");
test.done();
},
testMeridiem_ku_IQ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ku-IQ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ku-IQ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'ب.ن');
- test.equal(fmt[1].name, 'د.ن');
+ test.equal(range[0].name, "ب.ن");
+ test.equal(range[1].name, "د.ن");
test.done();
},
testMeridiem_lt_LT: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"lt-LT"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "lt-LT"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "priešpiet");
- test.equal(fmt[1].name, "popiet");
+ test.equal(range[0].name, "priešpiet");
+ test.equal(range[1].name, "popiet");
test.done();
},
testMeridiem_lv_LV: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"lv-LV"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "lv-LV"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "priekšpusdienā");
- test.equal(fmt[1].name, "pēcpusdienā");
+ test.equal(range[0].name, "priekšpusdienā");
+ test.equal(range[1].name, "pēcpusdienā");
test.done();
},
testMeridiem_mk_MK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"mk-MK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "mk-MK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "претпл.");
- test.equal(fmt[1].name, "попл.");
+ test.equal(range[0].name, "претпл.");
+ test.equal(range[1].name, "попл.");
test.done();
},
testMeridiem_ml_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ml-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ml-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_mr_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"mr-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "mr-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ms_MY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ms-MY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ms-MY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "PG");
- test.equal(fmt[1].name, "PTG");
+ test.equal(range[0].name, "PG");
+ test.equal(range[1].name, "PTG");
test.done();
},
testMeridiem_nb_NO: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"nb-NO"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "nb-NO"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_nl_BE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"nl-BE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "nl-BE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_nl_NL: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"nl-NL"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "nl-NL"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_pa_Guru_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pa-Guru-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pa-Guru-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ਪੂ.ਦੁ.");
- test.equal(fmt[1].name, "ਬਾ.ਦੁ.");
+ test.equal(range[0].name, "ਪੂ.ਦੁ.");
+ test.equal(range[1].name, "ਬਾ.ਦੁ.");
test.done();
},
testMeridiem_pl_PL: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pl-PL"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pl-PL"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_pt_BR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pt-BR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pt-BR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_pt_PT: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pt-PT"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pt-PT"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "da manhã");
- test.equal(fmt[1].name, "da tarde");
+ test.equal(range[0].name, "da manhã");
+ test.equal(range[1].name, "da tarde");
test.done();
},
testMeridiem_ro_RO: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ro-RO"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ro-RO"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_sr_Cyrl_RS: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sr-Cyrl-RS"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "sr-Cyrl-RS"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_sr_Latn_RS: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sr-Latn-RS"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "sr-Latn-RS"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ru_BY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ru-BY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ru-BY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ru_KG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ru-KG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ru-KG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ru_KZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ru-KZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ru-KZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ru_GE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ru-GE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ru-GE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ru_RU: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ru-RU"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ru-RU"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ru_UA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ru-UA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ru-UA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_sk_SK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sk-SK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "sk-SK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_sl_SI: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sl-SI"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "sl-SI"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "dop.");
- test.equal(fmt[1].name, "pop.");
+ test.equal(range[0].name, "dop.");
+ test.equal(range[1].name, "pop.");
test.done();
},
testMeridiem_sq_AL: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sq-AL"});
- test.ok(fmt !== null);
- test.equal(fmt[0].name, "e paradites");
- test.equal(fmt[1].name, "e pasdites");
+ var fmtinfo = new DateFmtInfo({locale: "sq-AL"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+ test.equal(range[0].name, "e paradites");
+ test.equal(range[1].name, "e pasdites");
test.done();
},
testMeridiem_sq_ME: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sq-ME"});
- test.ok(fmt !== null);
- test.equal(fmt[0].name, "e paradites");
- test.equal(fmt[1].name, "e pasdites");
+ var fmtinfo = new DateFmtInfo({locale: "sq-ME"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+ test.equal(range[0].name, "e paradites");
+ test.equal(range[1].name, "e pasdites");
test.done();
},
testMeridiem_sv_FI: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sv-FI"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "sv-FI"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "fm");
- test.equal(fmt[1].name, "em");
+ test.equal(range[0].name, "fm");
+ test.equal(range[1].name, "em");
test.done();
},
testMeridiem_sv_SE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"sv-SE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "sv-SE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "fm");
- test.equal(fmt[1].name, "em");
+ test.equal(range[0].name, "fm");
+ test.equal(range[1].name, "em");
test.done();
},
testMeridiem_ta_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ta-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ta-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "முற்பகல்");
- test.equal(fmt[1].name, "பிற்பகல்");
+ test.equal(range[0].name, "முற்பகல்");
+ test.equal(range[1].name, "பிற்பகல்");
test.done();
},
testMeridiem_te_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"te-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "te-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_th_TH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"th-TH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "th-TH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ก่อนเที่ยง");
- test.equal(fmt[1].name, "หลังเที่ยง");
+ test.equal(range[0].name, "ก่อนเที่ยง");
+ test.equal(range[1].name, "หลังเที่ยง");
test.done();
},
testMeridiem_tr_AM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"tr-AM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "tr-AM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ÖÖ");
- test.equal(fmt[1].name, "ÖS");
+ test.equal(range[0].name, "ÖÖ");
+ test.equal(range[1].name, "ÖS");
test.done();
},
testMeridiem_tr_AZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"tr-AZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "tr-AZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ÖÖ");
- test.equal(fmt[1].name, "ÖS");
+ test.equal(range[0].name, "ÖÖ");
+ test.equal(range[1].name, "ÖS");
test.done();
},
testMeridiem_tr_CY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"tr-CY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "tr-CY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ÖÖ");
- test.equal(fmt[1].name, "ÖS");
+ test.equal(range[0].name, "ÖÖ");
+ test.equal(range[1].name, "ÖS");
test.done();
},
testMeridiem_tr_TR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"tr-TR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "tr-TR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ÖÖ");
- test.equal(fmt[1].name, "ÖS");
+ test.equal(range[0].name, "ÖÖ");
+ test.equal(range[1].name, "ÖS");
test.done();
},
testMeridiem_uk_UA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"uk-UA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "uk-UA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "дп");
- test.equal(fmt[1].name, "пп");
+ test.equal(range[0].name, "дп");
+ test.equal(range[1].name, "пп");
test.done();
},
testMeridiem_ur_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ur-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ur-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_uz_Latn_UZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"uz-Latn-UZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "uz-Latn-UZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "TO");
- test.equal(fmt[1].name, "TK");
+ test.equal(range[0].name, "TO");
+ test.equal(range[1].name, "TK");
test.done();
},
testMeridiem_vi_VN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"vi-VN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "vi-VN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "SA");
- test.equal(fmt[1].name, "CH");
+ test.equal(range[0].name, "SA");
+ test.equal(range[1].name, "CH");
test.done();
},
testMeridiem_zh_Hans_CN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"zh-Hans-CN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "zh-Hans-CN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "上午");
- test.equal(fmt[1].name, "下午");
+ test.equal(range[0].name, "上午");
+ test.equal(range[1].name, "下午");
test.done();
},
testMeridiem_zh_Hant_HK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"zh-Hant-HK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "zh-Hant-HK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "上午");
- test.equal(fmt[1].name, "下午");
+ test.equal(range[0].name, "上午");
+ test.equal(range[1].name, "下午");
test.done();
},
testMeridiem_zh_Hant_TW: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"zh-Hant-TW"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "zh-Hant-TW"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "上午");
- test.equal(fmt[1].name, "下午");
+ test.equal(range[0].name, "上午");
+ test.equal(range[1].name, "下午");
test.done();
},
testMeridiem_en_GE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-GE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-GE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_CN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-CN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-CN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_MX: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-MX"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-MX"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_TW: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-TW"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-TW"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_mn_MN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"mn-MN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "mn-MN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ү.ө.");
- test.equal(fmt[1].name, "ү.х.");
+ test.equal(range[0].name, "ү.ө.");
+ test.equal(range[1].name, "ү.х.");
test.done();
},
testMeridiem_es_CA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-CA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-CA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_af_ZA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"af-ZA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "af-ZA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "vm.");
- test.equal(fmt[1].name, "nm.");
+ test.equal(range[0].name, "vm.");
+ test.equal(range[1].name, "nm.");
test.done();
},
testMeridiem_am_ET: function(test) {
test.expect(16);
- var fmt = DateFmt.getMeridiemsRange({locale:"am-ET", meridiems: "ethiopic"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "ethiopic"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ጥዋት");
- test.equal(fmt[0].start, "00:00");
- test.equal(fmt[0].end, "05:59");
+ test.equal(range[0].name, "ጥዋት");
+ test.equal(range[0].start, "00:00");
+ test.equal(range[0].end, "05:59");
- test.equal(fmt[1].name, "ቀትር");
- test.equal(fmt[1].start, "06:00");
- test.equal(fmt[1].end, "06:00");
+ test.equal(range[1].name, "ቀትር");
+ test.equal(range[1].start, "06:00");
+ test.equal(range[1].end, "06:00");
- test.equal(fmt[2].name, "ከሰዓት");
- test.equal(fmt[2].start, "06:01");
- test.equal(fmt[2].end, "11:59");
+ test.equal(range[2].name, "ከሰዓት");
+ test.equal(range[2].start, "06:01");
+ test.equal(range[2].end, "11:59");
- test.equal(fmt[3].name, "ከምሽቱ");
- test.equal(fmt[3].start, "12:00");
- test.equal(fmt[3].end, "17:59");
+ test.equal(range[3].name, "ከምሽቱ");
+ test.equal(range[3].start, "12:00");
+ test.equal(range[3].end, "17:59");
- test.equal(fmt[4].name, "ከሌሊቱ");
- test.equal(fmt[4].start, "18:00");
- test.equal(fmt[4].end, "23:59");
+ test.equal(range[4].name, "ከሌሊቱ");
+ test.equal(range[4].start, "18:00");
+ test.equal(range[4].end, "23:59");
test.done();
},
testMeridiem_ha_Latn_NG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ha-Latn-NG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ha-Latn-NG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'Safiya');
- test.equal(fmt[1].name, 'Yamma');
+ test.equal(range[0].name, 'Safiya');
+ test.equal(range[1].name, 'Yamma');
test.done();
},
testMeridiem_or_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"or-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "or-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_az_Latn_AZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"az-Latn-AZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "az-Latn-AZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_km_KH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"km-KH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "km-KH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_si_LK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"si-LK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "si-LK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "පෙ.ව.");
- test.equal(fmt[1].name, "ප.ව.");
+ test.equal(range[0].name, "පෙ.ව.");
+ test.equal(range[1].name, "ප.ව.");
test.done();
},
testMeridiem_ar_AE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-AE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-AE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_BH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-BH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-BH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_DJ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-DJ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-DJ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_DZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-DZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-DZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_JO: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-JO"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-JO"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_KW: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-KW"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-KW"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_LB: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-LB"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-LB"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_LY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-LY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-LY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_MR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-MR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-MR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_OM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-OM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-OM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_QA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-QA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-QA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_SA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-SA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-SA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_SD: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-SD"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-SD"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_SY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-SY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-SY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_TN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-TN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-TN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_ar_YE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ar-YE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ar-YE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "ص");
- test.equal(fmt[1].name, "م");
+ test.equal(range[0].name, "ص");
+ test.equal(range[1].name, "م");
test.done();
},
testMeridiem_en_ET: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-ET"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-ET"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_en_GM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-GM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-GM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_LR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-LR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-LR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_PK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-PK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-PK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_RW: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-RW"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-RW"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_SD: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-SD"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-SD"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_SL: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-SL"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-SL"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_en_TZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"en-TZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "en-TZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "am");
- test.equal(fmt[1].name, "pm");
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
test.done();
},
testMeridiem_es_CR: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-CR"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-CR"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_GQ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-GQ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-GQ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_es_PH: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"es-PH"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "es-PH"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'a. m.');
- test.equal(fmt[1].name, 'p. m.');
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_fr_BF: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-BF"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-BF"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_BJ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-BJ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-BJ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_CD: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-CD"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-CD"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_CF: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-CF"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-CF"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_CG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-CG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-CG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_CI: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-CI"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-CI"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_CM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-CM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-CM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "matin");
- test.equal(fmt[1].name, "soir");
+ test.equal(range[0].name, "matin");
+ test.equal(range[1].name, "soir");
test.done();
},
testMeridiem_fr_GQ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-GQ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-GQ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_DJ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-DJ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-DJ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_DZ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-DZ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-DZ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_GA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-GA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-GA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_GN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-GN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-GN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_LB: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-LB"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-LB"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_ML: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-ML"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-ML"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_RW: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-RW"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-RW"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_SN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-SN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-SN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_fr_TG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"fr-TG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "fr-TG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ms_SG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ms-SG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ms-SG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "PG");
- test.equal(fmt[1].name, "PTG");
+ test.equal(range[0].name, "PG");
+ test.equal(range[1].name, "PTG");
test.done();
},
testMeridiem_pa_Arab_PK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pa-Arab-PK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pa-Arab-PK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'AM');
- test.equal(fmt[1].name, 'PM');
+ test.equal(range[0].name, 'AM');
+ test.equal(range[1].name, 'PM');
test.done();
},
testMeridiem_pt_AO: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pt-AO"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pt-AO"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "da manhã");
- test.equal(fmt[1].name, "da tarde");
+ test.equal(range[0].name, "da manhã");
+ test.equal(range[1].name, "da tarde");
test.done();
},
testMeridiem_pt_GQ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pt-GQ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pt-GQ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "da manhã");
- test.equal(fmt[1].name, "da tarde");
+ test.equal(range[0].name, "da manhã");
+ test.equal(range[1].name, "da tarde");
test.done();
},
testMeridiem_pt_CV: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pt-CV"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "pt-CV"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "da manhã");
- test.equal(fmt[1].name, "da tarde");
+ test.equal(range[0].name, "da manhã");
+ test.equal(range[1].name, "da tarde");
test.done();
},
testMeridiem_ur_PK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ur-PK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ur-PK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_zh_Hans_SG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"zh-Hans-SG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "zh-Hans-SG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "上午");
- test.equal(fmt[1].name, "下午");
+ test.equal(range[0].name, "上午");
+ test.equal(range[1].name, "下午");
test.done();
},
testMeridiem_zh_Hans_MY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"zh-Hans-MY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "zh-Hans-MY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, "上午");
- test.equal(fmt[1].name, "下午");
+ test.equal(range[0].name, "上午");
+ test.equal(range[1].name, "下午");
test.done();
},
+
testMeridiem_ka_GE: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ka-GE"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ka-GE"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_be_BY: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"be-BY"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "be-BY"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_lo_LA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"lo-LA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "lo-LA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "ກ່ອນທ່ຽງ");
- test.equal(fmt[1].name, "ຫຼັງທ່ຽງ");
+ test.equal(range[0].name, "ກ່ອນທ່ຽງ");
+ test.equal(range[1].name, "ຫຼັງທ່ຽງ");
test.done();
},
testMeridiem_ky_KG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ky-KG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ky-KG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "таңкы");
- test.equal(fmt[1].name, "түштөн кийинки");
+ test.equal(range[0].name, "таңкы");
+ test.equal(range[1].name, "түштөн кийинки");
test.done();
},
testMeridiem_ca_AD: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ca-AD"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ca-AD"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "a. m.");
- test.equal(fmt[1].name, "p. m.");
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_ca_ES: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ca-ES"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ca-ES"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "a. m.");
- test.equal(fmt[1].name, "p. m.");
+ test.equal(range[0].name, "a. m.");
+ test.equal(range[1].name, "p. m.");
test.done();
},
testMeridiem_hy_AM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"hy-AM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "hy-AM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_gl_ES: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"gl-ES"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "gl-ES"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "a.m.");
- test.equal(fmt[1].name, "p.m.");
+ test.equal(range[0].name, "a.m.");
+ test.equal(range[1].name, "p.m.");
test.done();
},
testMeridiem_en_ES: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"eu-ES"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "eu-ES"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "AM");
- test.equal(fmt[1].name, "PM");
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
test.done();
},
testMeridiem_ne_NP: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ne-NP"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "ne-NP"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, "पूर्वाह्न");
- test.equal(fmt[1].name, "अपराह्न");
+ test.equal(range[0].name, "पूर्वाह्न");
+ test.equal(range[1].name, "अपराह्न");
test.done();
},
testMeridiem_my_MM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"my-MM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "my-MM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'နံနက်');
- test.equal(fmt[1].name, 'ညနေ');
+ test.equal(range[0].name, 'နံနက်');
+ test.equal(range[1].name, 'ညနေ');
test.done();
},
testMeridiem_wo_SN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"wo-SN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "wo-SN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'Sub');
- test.equal(fmt[1].name, 'Ngo');
+ test.equal(range[0].name, 'Sub');
+ test.equal(range[1].name, 'Ngo');
test.done();
},
testMeridiem_tk_TM: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"tk-TM"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "tk-TM"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'günortadan öň');
- test.equal(fmt[1].name, 'günortadan soň');
+ test.equal(range[0].name, 'günortadan öň');
+ test.equal(range[1].name, 'günortadan soň');
test.done();
},
testMeridiem_tg_TJ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"tg-TJ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "tg-TJ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'AM');
- test.equal(fmt[1].name, 'PM');
+ test.equal(range[0].name, 'AM');
+ test.equal(range[1].name, 'PM');
test.done();
},
testMeridiem_mt_MT: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"mt-MT"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "mt-MT"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'AM');
- test.equal(fmt[1].name, 'PM');
+ test.equal(range[0].name, 'AM');
+ test.equal(range[1].name, 'PM');
test.done();
},
testMeridiem_zu_ZA: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"zu-ZA"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale: "zu-ZA"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'AM');
- test.equal(fmt[1].name, 'PM');
+ test.equal(range[0].name, 'AM');
+ test.equal(range[1].name, 'PM');
test.done();
},
testMeridiem_lb_LU: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"lb-LU"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"lb-LU"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'moies');
- test.equal(fmt[1].name, 'nomëttes');
+ test.equal(range[0].name, 'moies');
+ test.equal(range[1].name, 'nomëttes');
test.done();
},
testMeridiem_pa_IN: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pa-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"pa-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'ਪੂ.ਦੁ.');
- test.equal(fmt[1].name, 'ਬਾ.ਦੁ.');
+ test.equal(range[0].name, 'ਪੂ.ਦੁ.');
+ test.equal(range[1].name, 'ਬਾ.ਦੁ.');
test.done();
},
testMeridiem_pa_IN_Custom: function(test) {
@@ -2155,58 +2368,509 @@ module.exports.testmeridiems = {
ilibLoader.addPath(multiPath);
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"pa-IN"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"pa-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'AM');
- test.equal(fmt[1].name, 'PM');
+ test.equal(range[0].name, 'AM');
+ test.equal(range[1].name, 'PM');
ilibLoader.removePath(multiPath);
test.done();
},
testMeridiem_ig_NG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ig-NG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"ig-NG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'N’ụtụtụ');
- test.equal(fmt[1].name, 'N’abali');
+ test.equal(range[0].name, 'N’ụtụtụ');
+ test.equal(range[1].name, 'N’abali');
test.done();
},
testMeridiem_ps_AF: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ps-AF"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"ps-AF"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'غ.م.');
- test.equal(fmt[1].name, 'غ.و.');
+ test.equal(range[0].name, 'غ.م.');
+ test.equal(range[1].name, 'غ.و.');
test.done();
},
testMeridiem_ps_PK: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"ps-PK"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"ps-PK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'غ.م.');
- test.equal(fmt[1].name, 'غ.و.');
+ test.equal(range[0].name, 'غ.م.');
+ test.equal(range[1].name, 'غ.و.');
test.done();
},
testMeridiem_yo_NG: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"yo-NG"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"yo-NG"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
- test.equal(fmt[0].name, 'Àárọ̀');
- test.equal(fmt[1].name, 'Ọ̀sán');
+ test.equal(range[0].name, 'Àárọ̀');
+ test.equal(range[1].name, 'Ọ̀sán');
test.done();
},
testMeridiem_yo_BJ: function(test) {
test.expect(3);
- var fmt = DateFmt.getMeridiemsRange({locale:"yo-BJ"});
- test.ok(fmt !== null);
+ var fmtinfo = new DateFmtInfo({locale:"yo-BJ"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range);
+
+ test.equal(range[0].name, 'Àárɔ̀');
+ test.equal(range[1].name, 'Ɔ̀sán');
+ test.done();
+ },
+
+ testGetMeridiemsRangeLength_with_am_ET_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range.length, 5);
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_am_ET_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "ጥዋት");
+ test.done();
+ },
+
+ testGetMeridiemsRangeStart_with_am_ET_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].start, "00:00");
+ test.done();
+ },
+
+ testGetMeridiemsRangeEnd_with_am_ET_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].end, "05:59");
+ test.done();
+ },
+
+ testGetMeridiemsRangeLength_with_am_ET_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range.length, 2);
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_am_ET_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "ጥዋት");
+ test.done();
+ },
+
+ testGetMeridiemsRangeStart_with_am_ET_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].start, "00:00");
+ test.done();
+ },
+
+ testGetMeridiemsRangeEnd_with_am_ET_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].end, "11:59");
+ test.done();
+ },
+
+ testGetMeridiemsRangeLength_with_am_ET_locale_ethiopic_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "ethiopic"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range.length, 5);
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_am_ET_locale_ethiopic_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "ethiopic"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "ጥዋት");
+ test.done();
+ },
+
+ testGetMeridiemsRangeStart_with_am_ET_locale_ethiopic_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "ethiopic"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
- test.equal(fmt[0].name, 'Àárɔ̀');
- test.equal(fmt[1].name, 'Ɔ̀sán');
+ test.equal(range[0].start, "00:00");
test.done();
},
-}
\ No newline at end of file
+
+ testGetMeridiemsRangeEnd_with_am_ET_locale_ethiopic_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "am-ET", meridiems: "ethiopic"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].end, "05:59");
+ test.done();
+ },
+
+ testGetMeridiemsRangeLength_with_zh_CN_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range.length, 2);
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_zh_CN_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "上午");
+ test.done();
+ },
+
+ testGetMeridiemsRangeStart_with_zh_CN_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].start, "00:00");
+ test.done();
+ },
+
+ testGetMeridiemsRangeEnd_with_zh_CN_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].end, "11:59");
+ test.done();
+ },
+
+ testGetMeridiemsRangeLength_with_zh_CN_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range.length, 2);
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_zh_CN_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "上午");
+ test.done();
+ },
+
+ testGetMeridiemsRangeStart_with_zh_CN_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].start, "00:00");
+ test.done();
+ },
+
+ testGetMeridiemsRangeEnd_with_zh_CN_locale_gregorian_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "gregorian"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].end, "11:59");
+ test.done();
+ },
+
+ testGetMeridiemsRangeLength_with_zh_CN_locale_chinese_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "chinese"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range.length, 7);
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_zh_CN_locale_chinese_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "chinese"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "凌晨");
+ test.done();
+ },
+
+ testGetMeridiemsRangeStart_with_zh_CN_locale_chinese_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "chinese"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].start, "00:00");
+ test.done();
+ },
+
+ testGetMeridiemsRangeEnd_with_zh_CN_locale_chinese_meridiems: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "zh-CN", meridiems: "chinese"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].end, "05:59");
+ test.done();
+ },
+
+ testGetMeridiemsRangeLength_with_en_US_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "en-US"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range.length, 2);
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_en_US_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "en-US"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.done();
+ },
+
+ testGetMeridiemsRangeStart_with_en_US_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "en-US"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].start, "00:00");
+ test.done();
+ },
+
+ testGetMeridiemsRangeEnd_with_en_US_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({locale: "en-US"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].end, "11:59");
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_bn_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "bn-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_gu_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "gu-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_kn_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "kn-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "ಪೂರ್ವಾಹ್ನ");
+ test.equal(range[1].name, "ಅಪರಾಹ್ನ");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_ml_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "ml-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_mr_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "mr-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_or_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "or-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_pa_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "pa-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "ਪੂ.ਦੁ.");
+ test.equal(range[1].name, "ਬਾ.ਦੁ.");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_ta_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "ta-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "முற்பகல்");
+ test.equal(range[1].name, "பிற்பகல்");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_te_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "te-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_ur_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "ur-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_as_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "as-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, 'পূৰ্বাহ্ন');
+ test.equal(range[1].name, 'অপৰাহ্ন');
+ test.done();
+ },
+ testGetMeridiemsRangeName_with_hi_IN_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "hi-IN"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "am");
+ test.equal(range[1].name, "pm");
+ test.done();
+ },
+
+ testGetMeridiemsRangeName_with_ur_PK_locale: function(test) {
+ test.expect(3);
+ var fmtinfo = new DateFmtInfo({locale: "ur-PK"});
+ var range = fmtinfo.getMeridiemsRange();
+ test.ok(range !== null);
+
+ test.equal(range[0].name, "AM");
+ test.equal(range[1].name, "PM");
+ test.done();
+ },
+
+ testGetMeridiemsRange_with_noArgument: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo();
+ test.ok(fmtinfo !== null);
+ var mdRange = fmtinfo.getMeridiemsRange();
+ // if locale is not specified, DateFmt takes default locale.
+ test.ok("getMeridiemsRange should return length value greater than 0", mdRange.length > 0);
+ test.done();
+ },
+
+ testGetMeridiemsRange_with_undefined_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({ locale: undefined });
+ test.ok(fmtinfo !== null);
+
+ var mdRange = fmtinfo.getMeridiemsRange();
+ // if locale is not specified, DateFmt takes default locale.
+ test.ok("getMeridiemsRange should return length value greater than 0", mdRange.length > 0);
+ test.done();
+ },
+
+ testGetMeridiemsRange_with_wrong_locale: function(test) {
+ test.expect(2);
+ var fmtinfo = new DateFmtInfo({ locale: "wrong" });
+ test.ok(fmtinfo !== null);
+
+ var mdRange = fmtinfo.getMeridiemsRange();
+ // if locale is specified wrong value, DateFmt takes default locale.
+ test.ok("getMeridiemsRange should return length value greater than 0", mdRange.length > 0);
+ test.done();
+ },
+}
diff --git a/js/test/date/testSuiteFiles.js b/js/test/date/testSuiteFiles.js
index 4f6e4001a9..92cf86da3e 100644
--- a/js/test/date/testSuiteFiles.js
+++ b/js/test/date/testSuiteFiles.js
@@ -1,7 +1,7 @@
/*
* testSuiteFiles.js - list the test files in this directory
*
- * Copyright © 2017-2018, 2020-2022 JEDLSoft
+ * Copyright © 2017-2018, 2020-2023 JEDLSoft
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@
*/
module.exports.files = [
+ "testdatefmtinfo.js",
"testclock.js",
"testcalendar.js",
"testdate.js",
@@ -125,4 +126,4 @@ module.exports.files = [
"testdatefmt_zh_Hant_HK.js",
"testdatefmt_zh_Hant_TW.js",
"testdatefmt_zu_ZA.js"
-];
\ No newline at end of file
+];
diff --git a/js/test/date/testdatefmt.js b/js/test/date/testdatefmt.js
index 28ba0ed19b..48d4d17023 100644
--- a/js/test/date/testdatefmt.js
+++ b/js/test/date/testdatefmt.js
@@ -140,6 +140,7 @@ module.exports.testdatefmt = {
test.expect(2);
var fmt = new DateFmt({length: "full"});
test.ok(fmt !== null);
+
test.equal(fmt.getLength(), "full");
test.done();
},
@@ -689,12 +690,9 @@ module.exports.testdatefmt = {
var fmt = new DateFmt();
test.ok(fmt !== null);
var expected = [
- "'El'",
- " ",
+ "'El' ",
"d",
- " ",
- "'de'",
- " ",
+ " 'de' ",
"MMMM",
", ",
"yyyy"
@@ -3646,7 +3644,7 @@ module.exports.testdatefmt = {
testDateFmtGetDateComponentOrderEN: function(test) {
test.expect(2);
- var fmt = new DateFmt({locale: "en"})
+ var fmt = new DateFmt({locale: "en"});
test.ok(fmt !== null);
test.equal(fmt.getDateComponentOrder(), "mdy");
@@ -3655,7 +3653,7 @@ module.exports.testdatefmt = {
testDateFmtGetDateComponentOrderENGB: function(test) {
test.expect(2);
- var fmt = new DateFmt({locale: "en-GB"})
+ var fmt = new DateFmt({locale: "en-GB"});
test.ok(fmt !== null);
test.equal(fmt.getDateComponentOrder(), "dmy");
@@ -3673,7 +3671,7 @@ module.exports.testdatefmt = {
testDateFmtGetDateComponentOrderDE: function(test) {
test.expect(2);
- var fmt = new DateFmt({locale: "de-DE"})
+ var fmt = new DateFmt({locale: "de-DE"});
test.ok(fmt !== null);
test.equal(fmt.getDateComponentOrder(), "dmy");
@@ -3682,7 +3680,7 @@ module.exports.testdatefmt = {
testDateFmtGetDateComponentOrderAK: function(test) {
test.expect(2);
- var fmt = new DateFmt({locale: "ak-GH"})
+ var fmt = new DateFmt({locale: "ak-GH"});
test.ok(fmt !== null);
test.equal(fmt.getDateComponentOrder(), "ymd");
@@ -3691,7 +3689,7 @@ module.exports.testdatefmt = {
testDateFmtGetDateComponentOrderLV: function(test) {
test.expect(2);
- var fmt = new DateFmt({locale: "lv-LV"})
+ var fmt = new DateFmt({locale: "lv-LV"});
test.ok(fmt !== null);
test.equal(fmt.getDateComponentOrder(), "ydm");
@@ -3710,7 +3708,7 @@ module.exports.testdatefmt = {
test.expect(2);
var fmt = new DateFmt({locale: "tk-TM"})
- test.ok(fmt !== null);
+ test.ok(fmt !== null);
test.equal(fmt.getDateComponentOrder(), "dmy");
test.done();
@@ -3719,7 +3717,7 @@ module.exports.testdatefmt = {
test.expect(2);
var fmt = new DateFmt({locale: "tg-TJ"})
- test.ok(fmt !== null);
+ test.ok(fmt !== null);
test.equal(fmt.getDateComponentOrder(), "dmy");
test.done();
@@ -3774,4 +3772,4 @@ module.exports.testdatefmt = {
}
test.done();
}
-};
\ No newline at end of file
+};
diff --git a/js/test/date/testdatefmtasync.js b/js/test/date/testdatefmtasync.js
index a6e465b973..1878eb012c 100644
--- a/js/test/date/testdatefmtasync.js
+++ b/js/test/date/testdatefmtasync.js
@@ -1,7 +1,7 @@
/*
* testdatefmtasync.js - test the date formatter object asynchronously
*
- * Copyright © 2018, 2022-2023 JEDLSoft
+ * Copyright © 2018, 2021-2023 JEDLSoft
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -41,6 +41,9 @@ if (typeof(JulianDate) === "undefined") {
if (typeof(DateFmt) === "undefined") {
var DateFmt = require("../../lib/DateFmt.js");
}
+if (typeof(DateFmtInfo) === "undefined") {
+ var DateFmtInfo = require("../../lib/DateFmtInfo.js");
+}
if (typeof(DateFactory) === "undefined") {
var DateFactory = require("../../lib/DateFactory.js");
}
@@ -190,7 +193,7 @@ module.exports.testdatefmtasync = {
testDateFmtGetMonthsOfYearThai: function(test) {
test.expect(2);
// uses ThaiSolar calendar
- var fmt = new DateFmt({
+ var fmt = new DateFmtInfo({
locale: "th-TH",
sync: false,
onLoad: function(fmt) {
@@ -301,7 +304,258 @@ module.exports.testdatefmtasync = {
test.done();
}
});
+ }
+ });
+ },
+
+ testDateFmtGetFormatInfoUSShortAsync: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ length: "short",
+ sync: false,
+ onLoad: function(fmt) {
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: false,
+ year: 2019,
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Month");
+ test.deepEqual(info[0].constraint, [1, 12]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, "/");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Day");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, "/");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Year");
+ test.equal(info[4].constraint, "\\d{2}");
+ test.done();
+ }
+ });
+ }
+ });
+ },
+
+ testDateFmtGetFormatInfoGregorianTranslatedAsync: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ length: "full",
+ uiLocale: "de-DE",
+ sync: false,
+ onLoad: function(fmt) {
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ year: 2019,
+ sync: false,
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Monat");
+ test.deepEqual(info[0].constraint, [
+ {label: "Januar", value: 1},
+ {label: "Februar", value: 2},
+ {label: "März", value: 3},
+ {label: "April", value: 4},
+ {label: "Mai", value: 5},
+ {label: "Juni", value: 6},
+ {label: "Juli", value: 7},
+ {label: "August", value: 8},
+ {label: "September", value: 9},
+ {label: "Oktober", value: 10},
+ {label: "November", value: 11},
+ {label: "Dezember", value: 12},
+ ]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, " ");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Tag");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+ test.ok(!info[3].component);
+ test.equal(info[3].label, ", ");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Jahr");
+ test.equal(info[4].constraint, "\\d{4}");
+ test.done();
+ }
+ });
+ }
+ });
+ },
+
+ testDateFmtInfoGetFormatInfoUSFullAllFieldsAsync: function(test) {
+ test.expect(172);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "datetime",
+ length: "full",
+ date: "wmdy",
+ time: "ahmsz",
+ sync: false,
+ onLoad: function(fmt) {
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: false,
+ year: 2019, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 17);
+
+ test.equal(info[0].label, "Day of Week"),
+ test.equal(typeof(info[0].value), "function");
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, ", ");
+
+ test.equal(info[2].component, "month");
+ test.equal(info[2].label, "Month");
+ test.deepEqual(info[2].constraint, [
+ {label: "January", value: 1},
+ {label: "February", value: 2},
+ {label: "March", value: 3},
+ {label: "April", value: 4},
+ {label: "May", value: 5},
+ {label: "June", value: 6},
+ {label: "July", value: 7},
+ {label: "August", value: 8},
+ {label: "September", value: 9},
+ {label: "October", value: 10},
+ {label: "November", value: 11},
+ {label: "December", value: 12}
+ ]);
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, " ");
+
+ test.equal(info[4].component, "day");
+ test.equal(info[4].label, "Day");
+ test.deepEqual(info[4].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+ test.equal(info[4].validation, "\\d{1,2}");
+
+ test.ok(!info[5].component);
+ test.equal(info[5].label, ", ");
+
+ test.equal(info[6].component, "year");
+ test.equal(info[6].label, "Year");
+ test.equal(info[6].placeholder, "YYYY");
+ test.equal(info[6].constraint, "\\d{4}");
+
+ test.ok(!info[7].component);
+ test.equal(info[7].label, " at ");
+
+ test.equal(info[8].component, "hour");
+ test.equal(info[8].label, "Hour");
+ test.equal(info[8].placeholder, "H");
+ test.deepEqual(info[8].constraint, ["12", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]);
+ test.equal(info[8].validation, "\\d{1,2}");
+
+ test.ok(!info[9].component);
+ test.equal(info[9].label, ":");
+
+ test.equal(info[10].component, "minute");
+ test.equal(info[10].label, "Minute");
+ test.equal(info[10].placeholder, "mm");
+ for (var i = 0; i < 60; i++) {
+ test.equal(Number(info[10].constraint[i]), i);
+ }
+ test.equal(info[10].validation, "\\d{2}");
+
+ test.ok(!info[11].component);
+ test.equal(info[11].label, ":");
+
+ test.equal(info[12].component, "second");
+ test.equal(info[12].label, "Second");
+ test.equal(info[12].placeholder, "ss");
+ for (var i = 0; i < 60; i++) {
+ test.equal(Number(info[12].constraint[i]), i);
+ }
+ test.equal(info[12].validation, "\\d{2}");
+
+ test.ok(!info[13].component);
+ test.equal(info[13].label, " ");
+
+ test.equal(info[14].component, "meridiem");
+ test.equal(info[14].label, "AM/PM");
+ test.deepEqual(info[14].constraint, ["AM", "PM"]);
+
+ test.ok(!info[15].component);
+ test.equal(info[15].label, " ");
+
+ test.equal(info[16].component, "timezone");
+ test.equal(info[16].label, "Time zone");
+ test.equal(typeof(info[16].constraint), "object");
+ test.equal(info[16].constraint.length, 538);
+ }
+ });
+
+ test.done();
}
});
},
@@ -494,4 +748,4 @@ module.exports.testdatefmtasync = {
}
});
},
-};
\ No newline at end of file
+};
diff --git a/js/test/date/testdatefmtinfo.js b/js/test/date/testdatefmtinfo.js
new file mode 100644
index 0000000000..aa4ba9ce9d
--- /dev/null
+++ b/js/test/date/testdatefmtinfo.js
@@ -0,0 +1,1178 @@
+/*
+ * testdatefmtinfo.js - test the date formatter object's
+ * getFormatInfo call
+ *
+ * Copyright © 2019-2023 JEDLSoft
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+if (typeof(ilib) === "undefined") {
+ var ilib = require("../../lib/ilib.js");
+}
+if (typeof(DateFactory) === "undefined") {
+ var DateFactory = require("../../lib/DateFactory.js");
+}
+if (typeof(DateFmtInfo) === "undefined") {
+ var DateFmtInfo = require("../../lib/DateFmtInfo.js");
+}
+
+module.exports.testdategetformatinfo = {
+ setUp: function(callback) {
+ ilib.clearCache();
+ callback();
+ },
+
+ testDateFmtInfoGetFormatInfoUSShort: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ date: "short"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 2019, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Month");
+ test.deepEqual(info[0].constraint, [1, 12]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, "/");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Day");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, "/");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Year");
+ test.equal(info[4].constraint, "\\d{2}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoUSShortLeapYear: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ date: "short"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 2020, // leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Month");
+ test.deepEqual(info[0].constraint, [1, 12]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, "/");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Day");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 31],
+ "2": [1, 29],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, "/");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Year");
+ test.equal(info[4].constraint, "\\d{2}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoUSFull: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ length: "full"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 2019,
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Month");
+ test.deepEqual(info[0].constraint, [
+ {label: "January", value: 1},
+ {label: "February", value: 2},
+ {label: "March", value: 3},
+ {label: "April", value: 4},
+ {label: "May", value: 5},
+ {label: "June", value: 6},
+ {label: "July", value: 7},
+ {label: "August", value: 8},
+ {label: "September", value: 9},
+ {label: "October", value: 10},
+ {label: "November", value: 11},
+ {label: "December", value: 12},
+ ]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, " ");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Day");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, ", ");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Year");
+ test.equal(info[4].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoGregorianTranslated: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ length: "full",
+ uiLocale: "de-DE"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ year: 2019,
+ sync: true,
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Monat");
+ test.deepEqual(info[0].constraint, [
+ {label: "Januar", value: 1},
+ {label: "Februar", value: 2},
+ {label: "März", value: 3},
+ {label: "April", value: 4},
+ {label: "Mai", value: 5},
+ {label: "Juni", value: 6},
+ {label: "Juli", value: 7},
+ {label: "August", value: 8},
+ {label: "September", value: 9},
+ {label: "Oktober", value: 10},
+ {label: "November", value: 11},
+ {label: "Dezember", value: 12},
+ ]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, " ");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Tag");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, ", ");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Jahr");
+ test.equal(info[4].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoUSShortAllFields: function(test) {
+ test.expect(175);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "datetime",
+ length: "short",
+ date: "wmdy",
+ time: "ahmsz"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 2019, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 17);
+
+ test.equal(info[0].label, "Day of Week"),
+ test.equal(typeof(info[0].value), "function");
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, ", ");
+
+ test.equal(info[2].component, "month");
+ test.equal(info[2].label, "Month");
+ test.equal(info[2].placeholder, "M");
+ test.deepEqual(info[2].constraint, [1, 12]);
+ test.equal(info[2].validation, "\\d{1,2}");
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, "/");
+
+ test.equal(info[4].component, "day");
+ test.equal(info[4].label, "Day");
+ test.equal(info[4].placeholder, "D");
+ test.deepEqual(info[4].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+ test.equal(info[4].validation, "\\d{1,2}");
+
+ test.ok(!info[5].component);
+ test.equal(info[5].label, "/");
+
+ test.equal(info[6].component, "year");
+ test.equal(info[6].label, "Year");
+ test.equal(info[6].placeholder, "YY");
+ test.equal(info[6].constraint, "\\d{2}");
+
+ test.ok(!info[7].component);
+ test.equal(info[7].label, ", ");
+
+ test.equal(info[8].component, "hour");
+ test.equal(info[8].label, "Hour");
+ test.equal(info[8].placeholder, "H");
+ test.deepEqual(info[8].constraint, ["12", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]);
+ test.equal(info[8].validation, "\\d{1,2}");
+
+ test.ok(!info[9].component);
+ test.equal(info[9].label, ":");
+
+ test.equal(info[10].component, "minute");
+ test.equal(info[10].label, "Minute");
+ test.equal(info[10].placeholder, "mm");
+ for (var i = 0; i < 60; i++) {
+ test.equal(Number(info[10].constraint[i]), i);
+ }
+ test.equal(info[10].validation, "\\d{2}");
+
+ test.ok(!info[11].component);
+ test.equal(info[11].label, ":");
+
+ test.equal(info[12].component, "second");
+ test.equal(info[12].label, "Second");
+ test.equal(info[12].placeholder, "ss");
+ for (var i = 0; i < 60; i++) {
+ test.equal(Number(info[12].constraint[i]), i);
+ }
+ test.equal(info[12].validation, "\\d{2}");
+
+ test.ok(!info[13].component);
+ test.equal(info[13].label, " ");
+
+ test.equal(info[14].component, "meridiem");
+ test.equal(info[14].label, "AM/PM");
+ test.deepEqual(info[14].constraint, ["AM", "PM"]);
+
+ test.ok(!info[15].component);
+ test.equal(info[15].label, " ");
+
+ test.equal(info[16].component, "timezone");
+ test.equal(info[16].label, "Time zone");
+ test.equal(typeof(info[16].constraint), "object");
+ test.equal(info[16].constraint.length, 538);
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoUSFullAllFields: function(test) {
+ test.expect(172);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "datetime",
+ length: "full",
+ date: "wmdy",
+ time: "ahmsz"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 2019, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 17);
+
+ test.equal(info[0].label, "Day of Week"),
+ test.equal(typeof(info[0].value), "function");
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, ", ");
+
+ test.equal(info[2].component, "month");
+ test.equal(info[2].label, "Month");
+ test.deepEqual(info[2].constraint, [
+ {label: "January", value: 1},
+ {label: "February", value: 2},
+ {label: "March", value: 3},
+ {label: "April", value: 4},
+ {label: "May", value: 5},
+ {label: "June", value: 6},
+ {label: "July", value: 7},
+ {label: "August", value: 8},
+ {label: "September", value: 9},
+ {label: "October", value: 10},
+ {label: "November", value: 11},
+ {label: "December", value: 12}
+ ]);
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, " ");
+
+ test.equal(info[4].component, "day");
+ test.equal(info[4].label, "Day");
+ test.deepEqual(info[4].constraint, {
+ "1": [1, 31],
+ "2": [1, 28],
+ "3": [1, 31],
+ "4": [1, 30],
+ "5": [1, 31],
+ "6": [1, 30],
+ "7": [1, 31],
+ "8": [1, 31],
+ "9": [1, 30],
+ "10": [1, 31],
+ "11": [1, 30],
+ "12": [1, 31]
+ });
+ test.equal(info[4].validation, "\\d{1,2}");
+
+ test.ok(!info[5].component);
+ test.equal(info[5].label, ", ");
+
+ test.equal(info[6].component, "year");
+ test.equal(info[6].label, "Year");
+ test.equal(info[6].placeholder, "YYYY");
+ test.equal(info[6].constraint, "\\d{4}");
+
+ test.ok(!info[7].component);
+ test.equal(info[7].label, " at ");
+
+ test.equal(info[8].component, "hour");
+ test.equal(info[8].label, "Hour");
+ test.equal(info[8].placeholder, "H");
+ test.deepEqual(info[8].constraint, ["12", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]);
+ test.equal(info[8].validation, "\\d{1,2}");
+
+ test.ok(!info[9].component);
+ test.equal(info[9].label, ":");
+
+ test.equal(info[10].component, "minute");
+ test.equal(info[10].label, "Minute");
+ test.equal(info[10].placeholder, "mm");
+ for (var i = 0; i < 60; i++) {
+ test.equal(Number(info[10].constraint[i]), i);
+ }
+ test.equal(info[10].validation, "\\d{2}");
+
+ test.ok(!info[11].component);
+ test.equal(info[11].label, ":");
+
+ test.equal(info[12].component, "second");
+ test.equal(info[12].label, "Second");
+ test.equal(info[12].placeholder, "ss");
+ for (var i = 0; i < 60; i++) {
+ test.equal(Number(info[12].constraint[i]), i);
+ }
+ test.equal(info[12].validation, "\\d{2}");
+
+ test.ok(!info[13].component);
+ test.equal(info[13].label, " ");
+
+ test.equal(info[14].component, "meridiem");
+ test.equal(info[14].label, "AM/PM");
+ test.deepEqual(info[14].constraint, ["AM", "PM"]);
+
+ test.ok(!info[15].component);
+ test.equal(info[15].label, " ");
+
+ test.equal(info[16].component, "timezone");
+ test.equal(info[16].label, "Time zone");
+ test.equal(typeof(info[16].constraint), "object");
+ test.equal(info[16].constraint.length, 538);
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoDayOfWeekCalculator: function(test) {
+ test.expect(6);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "datetime",
+ length: "full",
+ date: "wmdy",
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 2019, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info[0].label, "Day of Week"),
+ test.equal(typeof(info[0].value), "function");
+
+ test.equal(info[0].value(new Date(2019, 5, 3)), "Monday");
+ test.equal(info[0].value(new Date(2019, 7, 23)), "Friday");
+ }
+ });
+
+ test.done();
+ },
+
+
+ testDateFmtInfoGetFormatInfoHebrewCalendarNonLeap: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ length: "full",
+ calendar: "hebrew"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 5780, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Month");
+ test.deepEqual(info[0].constraint, [
+ {label: "Nisan", value: 1},
+ {label: "Iyyar", value: 2},
+ {label: "Sivan", value: 3},
+ {label: "Tammuz", value: 4},
+ {label: "Av", value: 5},
+ {label: "Elul", value: 6},
+ {label: "Tishri", value: 7},
+ {label: "Ḥeshvan", value: 8},
+ {label: "Kislev", value: 9},
+ {label: "Teveth", value: 10},
+ {label: "Shevat", value: 11},
+ {label: "Adar", value: 12},
+ ]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, " ");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Day");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 30],
+ "2": [1, 29],
+ "3": [1, 30],
+ "4": [1, 29],
+ "5": [1, 30],
+ "6": [1, 29],
+ "7": [1, 30],
+ "8": [1, 30],
+ "9": [1, 30],
+ "10": [1, 29],
+ "11": [1, 30],
+ "12": [1, 30]
+ });
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, ", ");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Year");
+ test.equal(info[4].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoHebrewCalendarLeap: function(test) {
+ test.expect(16);
+
+ var fmt = new DateFmtInfo({
+ locale: "en-US",
+ type: "date",
+ length: "full",
+ calendar: "hebrew"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 5779, // leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 5);
+
+ test.equal(info[0].component, "month");
+ test.equal(info[0].label, "Month");
+ test.deepEqual(info[0].constraint, [
+ {label: "Nisan", value: 1},
+ {label: "Iyyar", value: 2},
+ {label: "Sivan", value: 3},
+ {label: "Tammuz", value: 4},
+ {label: "Av", value: 5},
+ {label: "Elul", value: 6},
+ {label: "Tishri", value: 7},
+ {label: "Ḥeshvan", value: 8},
+ {label: "Kislev", value: 9},
+ {label: "Teveth", value: 10},
+ {label: "Shevat", value: 11},
+ {label: "Adar", value: 12},
+ {label: "Adar II", value: 13},
+ ]);
+
+ test.ok(!info[1].component);
+ test.equal(info[1].label, " ");
+
+ test.equal(info[2].component, "day");
+ test.equal(info[2].label, "Day");
+ test.deepEqual(info[2].constraint, {
+ "1": [1, 30],
+ "2": [1, 29],
+ "3": [1, 30],
+ "4": [1, 29],
+ "5": [1, 30],
+ "6": [1, 29],
+ "7": [1, 30],
+ "8": [1, 30],
+ "9": [1, 30],
+ "10": [1, 29],
+ "11": [1, 30],
+ "12": [1, 30],
+ "13": [1, 29]
+ });
+
+ test.ok(!info[3].component);
+ test.equal(info[3].label, ", ");
+
+ test.equal(info[4].component, "year");
+ test.equal(info[4].label, "Year");
+ test.equal(info[4].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoHebrewCalendarInHebrew: function(test) {
+ test.expect(18);
+
+ var fmt = new DateFmtInfo({
+ locale: "he-IL",
+ type: "date",
+ length: "full",
+ calendar: "hebrew"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 5780, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 6);
+
+ test.ok(!info[0].component);
+ test.equal(info[0].label, "\u200F"); // RTL mark
+
+ test.equal(info[1].component, "day");
+ test.equal(info[1].label, "יום");
+ test.deepEqual(info[1].constraint, {
+ "1": [1, 30],
+ "2": [1, 29],
+ "3": [1, 30],
+ "4": [1, 29],
+ "5": [1, 30],
+ "6": [1, 29],
+ "7": [1, 30],
+ "8": [1, 30],
+ "9": [1, 30],
+ "10": [1, 29],
+ "11": [1, 30],
+ "12": [1, 30]
+ });
+
+ test.ok(!info[2].component);
+ test.equal(info[2].label, " ב");
+
+ test.equal(info[3].component, "month");
+ test.equal(info[3].label, "חודש");
+ test.deepEqual(info[3].constraint, [
+ {label: "ניסן", value: 1},
+ {label: "אייר", value: 2},
+ {label: "סיוון", value: 3},
+ {label: "תמוז", value: 4},
+ {label: "אב", value: 5},
+ {label: "אלול", value: 6},
+ {label: "תשרי", value: 7},
+ {label: "חשוון", value: 8},
+ {label: "כסלו", value: 9},
+ {label: "טבת", value: 10},
+ {label: "שבט", value: 11},
+ {label: "אדר", value: 12},
+ ]);
+
+ test.ok(!info[4].component);
+ test.equal(info[4].label, " ");
+
+ test.equal(info[5].component, "year");
+ test.equal(info[5].label, "שנה");
+ test.equal(info[5].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoHebrewCalendarInHebrewLeap: function(test) {
+ test.expect(18);
+
+ var fmt = new DateFmtInfo({
+ locale: "he-IL",
+ type: "date",
+ length: "full",
+ calendar: "hebrew"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 5782, // leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 6);
+
+ test.ok(!info[0].component);
+ test.equal(info[0].label, "\u200F"); // RTL mark
+
+ test.equal(info[1].component, "day");
+ test.equal(info[1].label, "יום");
+ test.deepEqual(info[1].constraint, {
+ "1": [1, 30],
+ "2": [1, 29],
+ "3": [1, 30],
+ "4": [1, 29],
+ "5": [1, 30],
+ "6": [1, 29],
+ "7": [1, 30],
+ "8": [1, 29],
+ "9": [1, 30],
+ "10": [1, 29],
+ "11": [1, 30],
+ "12": [1, 30],
+ "13": [1, 29]
+ });
+
+ test.ok(!info[2].component);
+ test.equal(info[2].label, " ב");
+
+ test.equal(info[3].component, "month");
+ test.equal(info[3].label, "חודש");
+ test.deepEqual(info[3].constraint, [
+ {label: "ניסן", value: 1},
+ {label: "אייר", value: 2},
+ {label: "סיוון", value: 3},
+ {label: "תמוז", value: 4},
+ {label: "אב", value: 5},
+ {label: "אלול", value: 6},
+ {label: "תשרי", value: 7},
+ {label: "חשוון", value: 8},
+ {label: "כסלו", value: 9},
+ {label: "טבת", value: 10},
+ {label: "שבט", value: 11},
+ {label: "אדר א׳", value: 12},
+ {label: "אדר ב׳", value: 13}
+ ]);
+
+ test.ok(!info[4].component);
+ test.equal(info[4].label, " ");
+
+ test.equal(info[5].component, "year");
+ test.equal(info[5].label, "שנה");
+ test.equal(info[5].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoHebrewCalendarInArabic: function(test) {
+ test.expect(18);
+
+ var fmt = new DateFmtInfo({
+ locale: "he-IL",
+ type: "date",
+ length: "full",
+ calendar: "hebrew",
+ uiLocale: "ar-IL"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 5780, // non leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 6);
+
+ test.ok(!info[0].component);
+ test.equal(info[0].label, "\u200F"); // RTL mark
+
+ test.equal(info[1].component, "day");
+ test.equal(info[1].label, "يوم");
+ test.deepEqual(info[1].constraint, {
+ "1": [1, 30],
+ "2": [1, 29],
+ "3": [1, 30],
+ "4": [1, 29],
+ "5": [1, 30],
+ "6": [1, 29],
+ "7": [1, 30],
+ "8": [1, 30],
+ "9": [1, 30],
+ "10": [1, 29],
+ "11": [1, 30],
+ "12": [1, 30]
+ });
+
+ test.ok(!info[2].component);
+ test.equal(info[2].label, " ב");
+
+ test.equal(info[3].component, "month");
+ test.equal(info[3].label, "الشهر");
+ test.deepEqual(info[3].constraint, [
+ {label: "نيسان", value: 1},
+ {label: "أيار", value: 2},
+ {label: "سيفان", value: 3},
+ {label: "تموز", value: 4},
+ {label: "آب", value: 5},
+ {label: "أيلول", value: 6},
+ {label: "تشري", value: 7},
+ {label: "مرحشوان", value: 8},
+ {label: "كيسلو", value: 9},
+ {label: "طيفت", value: 10},
+ {label: "شباط", value: 11},
+ {label: "آذار", value: 12}
+ ]);
+
+ test.ok(!info[4].component);
+ test.equal(info[4].label, " ");
+
+ test.equal(info[5].component, "year");
+ test.equal(info[5].label, "السنة");
+ test.equal(info[5].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetFormatInfoHebrewCalendarInArabicLeap: function(test) {
+ test.expect(18);
+
+ var fmt = new DateFmtInfo({
+ locale: "he-IL",
+ type: "date",
+ length: "full",
+ calendar: "hebrew",
+ uiLocale: "ar-IL"
+ });
+ test.ok(fmt !== null);
+
+ fmt.getFormatInfo({
+ sync: true,
+ year: 5782, // leap year
+ onLoad: function(info) {
+ test.ok(info);
+
+ test.equal(info.length, 6);
+
+ test.ok(!info[0].component);
+ test.equal(info[0].label, "\u200F"); // RTL mark
+
+ test.equal(info[1].component, "day");
+ test.equal(info[1].label, "يوم");
+ test.deepEqual(info[1].constraint, {
+ "1": [1, 30],
+ "2": [1, 29],
+ "3": [1, 30],
+ "4": [1, 29],
+ "5": [1, 30],
+ "6": [1, 29],
+ "7": [1, 30],
+ "8": [1, 29],
+ "9": [1, 30],
+ "10": [1, 29],
+ "11": [1, 30],
+ "12": [1, 30],
+ "13": [1, 29]
+ });
+
+ test.ok(!info[2].component);
+ test.equal(info[2].label, " ב");
+
+ test.equal(info[3].component, "month");
+ test.equal(info[3].label, "الشهر");
+ test.deepEqual(info[3].constraint, [
+ {label: "نيسان", value: 1},
+ {label: "أيار", value: 2},
+ {label: "سيفان", value: 3},
+ {label: "تموز", value: 4},
+ {label: "آب", value: 5},
+ {label: "أيلول", value: 6},
+ {label: "تشري", value: 7},
+ {label: "مرحشوان", value: 8},
+ {label: "كيسلو", value: 9},
+ {label: "طيفت", value: 10},
+ {label: "شباط", value: 11},
+ {label: "آذار الأول", value: 12},
+ {label: "آذار الثاني", value: 13}
+ ]);
+
+ test.ok(!info[4].component);
+ test.equal(info[4].label, " ");
+
+ test.equal(info[5].component, "year");
+ test.equal(info[5].label, "السنة");
+ test.equal(info[5].constraint, "\\d{4}");
+ }
+ });
+
+ test.done();
+ },
+
+ testDateFmtInfoGetDateComponentOrderEN: function(test) {
+ test.expect(2);
+
+ var fmt = new DateFmtInfo({locale: "en"});
+ test.ok(fmt !== null);
+
+ test.equal(fmt.getDateComponentOrder(), "mdy");
+ test.done();
+ },
+
+ testDateFmtInfoGetDateComponentOrderENGB: function(test) {
+ test.expect(2);
+
+ var fmt = new DateFmtInfo({locale: "en-GB"});
+ test.ok(fmt !== null);
+
+ test.equal(fmt.getDateComponentOrder(), "dmy");
+ test.done();
+ },
+
+ testDateFmtInfoGetDateComponentOrderENUS: function(test) {
+ test.expect(2);
+
+ var fmt = new DateFmtInfo({locale: "en-US"})
+ test.ok(fmt !== null);
+
+ test.equal(fmt.getDateComponentOrder(), "mdy");
+ test.done();
+ },
+
+ testDateFmtInfoGetDateComponentOrderDE: function(test) {
+ test.expect(2);
+
+ var fmt = new DateFmtInfo({locale: "de-DE"});
+ test.ok(fmt !== null);
+
+ test.equal(fmt.getDateComponentOrder(), "dmy");
+ test.done();
+ },
+
+ testDateFmtInfoGetDateComponentOrderAK: function(test) {
+ test.expect(2);
+
+ var fmt = new DateFmtInfo({locale: "ak-GH"});
+ test.ok(fmt !== null);
+
+ test.equal(fmt.getDateComponentOrder(), "ymd");
+ test.done();
+ },
+
+ testDateFmtInfoGetDateComponentOrderLV: function(test) {
+ test.expect(2);
+
+ var fmt = new DateFmtInfo({locale: "lv-LV"});
+ test.ok(fmt !== null);
+
+ test.equal(fmt.getDateComponentOrder(), "ydm");
+ test.done();
+ },
+
+ testDateFmtInfoGetMonthsOfYear1: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "en-US"});
+ test.ok(fmt !== null);
+
+ var arrMonths = fmt.getMonthsOfYear();
+ var expected = [undefined, "J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"];
+ test.deepEqual(arrMonths, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetMonthsOfYear2: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "en-US"});
+ test.ok(fmt !== null);
+
+ var arrMonths = fmt.getMonthsOfYear({length: "long"});
+ var expected = [undefined, "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
+ test.deepEqual(arrMonths, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetMonthsOfYearThai: function(test) {
+ test.expect(2);
+ // uses ThaiSolar calendar
+ var fmt = new DateFmtInfo({locale: "th-TH"});
+ test.ok(fmt !== null);
+
+ var arrMonths = fmt.getMonthsOfYear({length: "long"});
+
+ var expected = [undefined, "ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."];
+ test.deepEqual(arrMonths, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetMonthsOfYearLeapYear: function(test) {
+ test.expect(2);
+ var d = DateFactory({type: "hebrew", locale: "en-US", year: 5774, month: 1, day: 1});
+ var fmt = new DateFmtInfo({date: "en-US", calendar: "hebrew"});
+ test.ok(fmt !== null);
+
+ var arrMonths = fmt.getMonthsOfYear({length: "long", date: d});
+
+ var expected = [undefined, "Nis", "Iyy", "Siv", "Tam", "Av", "Elu", "Tis", "Ḥes", "Kis", "Tev", "She", "Ada", "Ad2"];
+ test.deepEqual(arrMonths, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetMonthsOfYearNonLeapYear: function(test) {
+ test.expect(2);
+ var d = DateFactory({type: "hebrew", locale: "en-US", year: 5775, month: 1, day: 1});
+ var fmt = new DateFmtInfo({date: "en-US", calendar: "hebrew"});
+ test.ok(fmt !== null);
+
+ var arrMonths = fmt.getMonthsOfYear({length: "long", date: d});
+
+ var expected = [undefined, "Nis", "Iyy", "Siv", "Tam", "Av", "Elu", "Tis", "Ḥes", "Kis", "Tev", "She", "Ada"];
+ test.deepEqual(arrMonths, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetMonthsOfYearNonLeapYearInHebrew: function(test) {
+ test.expect(2);
+ var d = DateFactory({type: "hebrew", locale: "en-US", year: 5775, month: 1, day: 1});
+ var fmt = new DateFmtInfo({date: "en-US", calendar: "hebrew", uiLocale: "he-IL"});
+ test.ok(fmt !== null);
+
+ var arrMonths = fmt.getMonthsOfYear({length: "long", date: d});
+
+ var expected = [undefined, "ניסן", "אייר", "סיון", "תמוז", "אב", "אלול", "תשרי", "חשון", "כסלו", "טבת", "שבט", "אדר"];
+
+ test.deepEqual(arrMonths, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetDaysOfWeek1: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "en-US"});
+ test.ok(fmt !== null);
+
+ var arrDays = fmt.getDaysOfWeek();
+
+ var expected = ["S", "M", "T", "W", "T", "F", "S"];
+ test.deepEqual(arrDays, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetDaysOfWeek1InGerman: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "en-US", uiLocale: "de-DE"});
+ test.ok(fmt !== null);
+
+ var arrDays = fmt.getDaysOfWeek();
+
+ var expected = ["S", "M", "D", "M", "D", "F", "S"];
+ test.deepEqual(arrDays, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetDaysOfWeek2: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "en-US"});
+ test.ok(fmt !== null);
+
+ var arrDays = fmt.getDaysOfWeek({length: 'long'});
+ var expected = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
+ test.deepEqual(arrDays, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetDaysOfWeekOtherCalendar: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "en-US", calendar: "hebrew"});
+ test.ok(fmt !== null);
+
+ var arrDays = fmt.getDaysOfWeek({length: 'long'});
+
+ var expected = ["ris", "she", "shl", "rvi", "ḥam", "shi", "sha"];
+ test.deepEqual(arrDays, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetDaysOfWeekThai: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "th-TH", calendar: "thaisolar"});
+ test.ok(fmt !== null);
+
+ var arrDays = fmt.getDaysOfWeek({length: 'long'});
+
+ var expected = ["อา.", "จ.", "อ.", "พ.", "พฤ.", "ศ.", "ส."];
+ test.deepEqual(arrDays, expected);
+ test.done();
+ },
+
+ testDateFmtInfoGetDaysOfWeekThaiInEnglish: function(test) {
+ test.expect(2);
+ var fmt = new DateFmtInfo({locale: "en-US", calendar: "thaisolar"});
+ test.ok(fmt !== null);
+
+ var arrDays = fmt.getDaysOfWeek({length: 'long'});
+
+ var expected = ["ath", "cha", "ang", "phu", "phr", "suk", "sao"];
+ test.deepEqual(arrDays, expected);
+ test.done();
+ }
+};
diff --git a/tools/cldr/datefmts.js b/tools/cldr/datefmts.js
index 505c8889b8..92b357b803 100644
--- a/tools/cldr/datefmts.js
+++ b/tools/cldr/datefmts.js
@@ -20,6 +20,7 @@
* This code is intended to be run under node.js
*/
var fs = require('fs');
+var util = require('util');
var path = require('path');
var stringify = require('json-stable-stringify');
@@ -49,7 +50,7 @@ var rtlLanguages = [
"jpr",
"jrb",
"ks",
- "ku",
+ "ky",
"lad",
"lah",
"lki",
@@ -65,6 +66,8 @@ var rtlLanguages = [
"sd",
"swb",
"syr",
+ "tg",
+ "tk",
"ug",
"ur",
"uz",
@@ -73,7 +76,7 @@ var rtlLanguages = [
"xsa",
"yi",
"zza"
-];
+ ];
var rtlScripts = [
"Arab",
@@ -95,13 +98,13 @@ var rtlScripts = [
"Sarb",
"Syrc",
"Thaa",
-];
+ ];
var asianLangs = [
"ko",
"zh",
"ja"
-];
+ ];
function addDateFormat(formats, locale, data) {
if (!locale) {
@@ -177,7 +180,7 @@ function dateOrder(fmt) {
} else if (stripped.match(/y.*d.*M/)) {
return "ydm";
} else {
- console.log("WARNING: unknown date order: " + fmt);
+ console.log("WARNING: unknown date order: " + fmt + "\n");
}
}
@@ -192,7 +195,7 @@ function dateOrder2(fmt) {
} else if (stripped.match(/M.*d.*[Ec]/)) {
return "mdw";
} else {
- console.log("WARNING: unknown date order: " + fmt);
+ console.log("WARNING: unknown date order: " + fmt + "\n");
}
}
@@ -207,7 +210,7 @@ function timeOrder(fmt) {
} else if (stripped.match(/[hK].*[aB]/)) {
return "haz";
} else {
- console.log("WARNING: unknown time order: " + fmt);
+ console.log("WARNING: unknown time order: " + fmt + "\n");
}
}
@@ -291,26 +294,6 @@ function scanForLastChars(string, set) {
return -1;
}
-var cldrWidths = ["abbreviated", "narrow", "wide", "short"];
-
-function namesMatch(regular, standalone) {
- for (var i = 0; i < cldrWidths.length; i++) {
- var namesFormat = regular[cldrWidths[i]],
- namesStandAlone = standalone[cldrWidths[i]];
-
- for (var element in namesFormat) {
- if (element &&
- namesFormat[element] &&
- namesStandAlone[element] &&
- namesFormat[element] !== namesStandAlone[element]) {
- return false;
- }
- }
- }
-
- return true;
-}
-
/**
* Determine whether or not this locale distinguishes between stand-alone month or day-of-week
* names and in-format month or day-of-week names. The stand-alone months are typically used
@@ -321,90 +304,21 @@ function namesMatch(regular, standalone) {
* @param calendar
* @returns {Boolean}
*/
-function standAloneM(calendar, script) {
- // Verify that the MMM, or MMMM formats contain an 'L' which indicates stand-alone
- var available = calendar.dateTimeFormats.availableFormats;
- if ((!available.MMM || available.MMM.indexOf('L') < 0) &&
- (!available.MMMM || available.MMMM.indexOf('L') < 0)) {
- return false;
- }
-
- // special case: if the top level locale uses one script, and this
- // sublocale has another script, then the sublocale must override
- // the standalone settings for the top level, even if the standalone
- // month names are the same as the regular monthnames.
- if (script) {
- return true;
- }
-
- // not only does it need to use the L format char, the names of the months
- // need to be different from regular to standalone, otherwise we will just
- // use the regular anyways
- if (!namesMatch(calendar.months.format, calendar.months["stand-alone"])) {
- return true;
- }
-
- return false;
-}
-
-function standAloneYM(calendar, script) {
- // Verify that the yMMM or yMMMM formats contain an 'L' which indicates stand-alone
- var available = calendar.dateTimeFormats.availableFormats;
- if ((!available.yMMM || available.yMMM.indexOf('L') < 0) &&
- (!available.yMMMM || available.yMMMM.indexOf('L') < 0)) {
- return false;
- }
-
- // special case: if the top level locale uses one script, and this
- // sublocale has another script, then the sublocale must override
- // the standalone settings for the top level, even if the standalone
- // month names are the same as the regular monthnames.
- if (script) {
- return true;
- }
-
- // not only does it need to use the L format char, the names of the months
- // need to be different from regular to standalone, otherwise we will just
- // use the regular anyways
- if (!namesMatch(calendar.months.format, calendar.months["stand-alone"])) {
- return true;
- }
-
- return false;
-}
-
-function standAloneW(calendar, script) {
- // Verify that the E format contains a 'c' which indicates stand-alone
- var available = calendar.dateTimeFormats.availableFormats;
- if (!available.E || available.E.indexOf('c') < 0) {
- return false;
- }
-
- // special case: if the top level locale uses one script, and this
- // sublocale has another script, then the sublocale must override
- // the standalone settings for the top level, even if the standalone
- // day names are the same as the regular daynames.
- if (script) {
- return true;
- }
-
- // not only does it need to use the c format char, the names of the days
- // need to be different from regular to standalone, otherwise we will just
- // use the regular anyways
- if (!namesMatch(calendar.days.format, calendar.days["stand-alone"])) {
- return true;
+function standAlone(calendar) {
+ var monthNamesFormat = calendar.months.format.wide,
+ monthNamesStandAlone = calendar.months["stand-alone"].wide;
+
+ for (var month in monthNamesFormat) {
+ if ( month &&
+ monthNamesFormat[month] &&
+ monthNamesStandAlone[month] &&
+ monthNamesFormat[month] !== monthNamesStandAlone[month]) {
+ return true;
+ }
}
-
return false;
}
-function standAloneY(calendar, script) {
- // Verify that the y formats contain an 'r' which indicates stand-alone
- var available = calendar.dateTimeFormats.availableFormats;
- return (available.y && available.y.indexOf('r') > -1);
-}
-
-
/**
* Compare the non-date component parts of formats to see if they
* are different.
@@ -460,8 +374,8 @@ module.exports = {
addDateFormat(formats, locale, obj);
}
} catch (err) {
- console.log("File " + sourcePath + " is not readable or does not contain valid JSON.");
- console.log(err);
+ console.log("File " + sourcePath + " is not readable or does not contain valid JSON.\n");
+ console.log(err + "\n");
process.exit(2);
}
}
@@ -487,38 +401,38 @@ module.exports = {
createDateFormats: function (language, script, region, cldrData) {
var formats = {},
- cldrCalendar,
- calendar,
- isRtl = (rtlLanguages.indexOf(language) > -1) && (!script || rtlScripts.indexOf(script) > 0);
- rtlify = isRtl ? function(format) {
- var f = format.replace(/\u200F/g, "");
-
- switch(f.charAt(0)) {
- case 'd':
- case 'y':
- case 'h':
- case 'H':
- case 'N':
+ cldrCalendar,
+ calendar,
+ isRtl = (rtlLanguages.indexOf(language) > -1) && (!script || rtlScripts.indexOf(script) > 0);
+ rtlify = isRtl ? function(format) {
+ var f = format.replace(/\u200F/g, "");
+
+ switch(f.charAt(0)) {
+ case 'd':
+ case 'y':
+ case 'h':
+ case 'H':
+ case 'N':
+ return "\u200F" + f;
+
+ case 'M':
+ var i = 1;
+ while (f.charAt(i) === "M") {
+ i++;
+ }
+ if (i < 3) {
+ // 1 and 2 M's are numeric, whereas 3 and 4 M's are letters
return "\u200F" + f;
+ }
+ return f;
- case 'M':
- var i = 1;
- while (f.charAt(i) === "M") {
- i++;
- }
- if (i < 3) {
- // 1 and 2 M's are numeric, whereas 3 and 4 M's are letters
- return "\u200F" + f;
- }
- return f;
+ default:
+ return f;
+ }
+ } : function(format) {
+ return format;
+ };
- default:
- return f;
- }
- } : function(format) {
- return format;
- };
- var isAsian = isAsianLang(language);
for (var calendarName in cldrData) {
cldrCalendar = cldrData[calendarName];
@@ -540,13 +454,15 @@ module.exports = {
};
}
+ var usesStandAlone = standAlone(cldrCalendar);
+
// glean the lengths of the various parts
var cldrFormats = {},
d = {},
m = {},
y = {};
- for (var i = 0; i < lengths.length; i++) {
+ for (i = 0; i < lengths.length; i++) {
var len = lengths[i];
cldrFormats[len] = getDateFormat(cldrCalendar, len);
@@ -576,10 +492,21 @@ module.exports = {
* stand-alone of w (weekday) is e
* stand-alone of y (year) is r
*/
+ if (usesStandAlone) {
+ calendar.date.e = {};
+ calendar.date.l = {};
+ }
+
+ if (isAsianLang(language)) {
+ calendar.date.a = {};
+ calendar.date.l = {};
+ calendar.date.r = {};
+ }
+
var w;
- var weekFormatIndex = scanForChars(cldrFormats["full"], "Ec");
- if (weekFormatIndex > -1 && cldrFormats["full"].charAt(weekFormatIndex) === "c") {
+ i = scanForChars(cldrFormats["full"], "Ec");
+ if (i > -1 && cldrFormats["full"].charAt(i) === "c") {
w = {
"full": "cccc",
"long": "ccc",
@@ -611,17 +538,17 @@ module.exports = {
if (y["full"] !== y["long"]) {
longPlus = longPlus.replace(y["long"], y["full"]);
}
- // console.log("Search for '" + longPlus + "' in '" + cldrFormats["full"] + "'");
- var longIndex = cldrFormats["full"].indexOf(longPlus);
- if (longIndex > -1 && weekFormatIndex !== -1) {
+ // console.log("Search for '" + longPlus + "' in '" + cldrFormats["full"] + "'\n");
+ i = cldrFormats["full"].indexOf(longPlus);
+ if (i > -1) {
tmp = cldrFormats["full"].replace(longPlus, "{date}");
- // console.log("tmp is " + tmp);
+ // console.log("tmp is " + tmp + "\n");
wTemplate = tmp;
} else {
// didn't work. Next attempt: try searching for the w components and see if the dmy parts come before
// or after it in the format. If it comes before, take after the the first "d", "M", or "y" as the "dmy"
// part. If it comes after take everything up to the first "d", "M", or "y" as the "dmy" part.
- // console.log("Not found. Trying positional method");
+ // console.log("Not found. Trying positional method\n");
// strip out the quoted parts so we don't accidentally match the characters inside the quotes
var full = cldrFormats["full"];
@@ -631,39 +558,36 @@ module.exports = {
if (scanForLastChars(full, "E") < min) {
wTemplate = full.substring(0, min) + "{date}";
longPlus = full.substring(min);
- // console.log("language " + language + " E found before date. Using wtemplate " + wTemplate);
+ // console.log("language " + language + " E found before date. Using wtemplate " + wTemplate + "\n");
} else if (scanForChars(full, "E") > max) {
// scan backwards to find the last dmy char
- var iterator = full.length-1;
+ i = full.length-1;
var skipMode = false;
- while (iterator > -1) {
- if (full.charAt(iterator) === "'") {
+ while (i > -1) {
+ if (full.charAt(i) === "'") {
skipMode = !skipMode;
} else if (!skipMode) {
- var c = full.charAt(iterator);
+ var c = full.charAt(i);
if (c === 'd' || c === 'M' || c === 'y') {
break;
}
}
- iterator--;
+ i--;
}
- wTemplate = "{date}" + full.substring(iterator+1);
- longPlus = full.substring(0, iterator+1);
- // console.log("language " + language + " E found after date. Using wtemplate " + wTemplate + " and longPlus is " + longPlus);
+ wTemplate = "{date}" + full.substring(i+1);
+ longPlus = full.substring(0, i+1);
+ // console.log("language " + language + " E found after date. Using wtemplate " + wTemplate + " and longPlus is " + longPlus + "\n");
//} else {
// the w is in the middle of the dmy... not sure what to do about that!
- // console.log("failed. Using fallback.");
+ // console.log("failed. Using fallback.\n");
}
}
- // console.log("wTemplate is " + wTemplate);
+ // console.log("wTemplate is " + wTemplate + "\n");
calendar.date.dmwy["f"] = rtlify(correctedYear(cldrFormats["full"]));
calendar.date.dmy["f"] = rtlify(correctedYear(longPlus));
- for (var i = 0; i < lengths.length; i++) {
- if (i == 0 && weekFormatIndex > -1) {
- continue;
- }
+ for (i = 1; i < lengths.length; i++) {
var len = lengths[i];
var lenAbbr = len.charAt(0);
tmp = wTemplate.replace(/\{date\}/, cldrFormats[len]);
@@ -676,7 +600,7 @@ module.exports = {
var orders = {};
- for (var i = 0; i < lengths.length; i++) {
+ for (i = 0; i < lengths.length; i++) {
var len = lengths[i];
var lenAbbr = len.charAt(0);
calendar.date.w[lenAbbr] = w[len];
@@ -692,20 +616,20 @@ module.exports = {
// the long format
switch (orders[len]) {
case "dmy":
- // console.log("Length " + len + " order dmy");
+ // console.log("Length " + len + " order dmy\n");
calendar.date.my[lenAbbr] = rtlify(dmy.substring(scanForChars(dmy, "M")));
calendar.date.dm[lenAbbr] = rtlify(dmy.substring(0, scanForLastChars(dmy, "M")));
break;
case "mdy":
- // console.log("Length " + len + " order mdy");
+ // console.log("Length " + len + " order mdy\n");
calendar.date.my[lenAbbr] = rtlify(dmy.substring(0, scanForLastChars(dmy, "M")) +
dmy.substring(scanForLastChars(dmy, "d")));
calendar.date.dm[lenAbbr] = rtlify(dmy.substring(0, scanForLastChars(dmy, "d")));
break;
case "ymd":
- // console.log("Length " + len + " order ymd");
+ // console.log("Length " + len + " order ymd\n");
calendar.date.dm[lenAbbr] = rtlify(dmy.substring(scanForChars(dmy, "M")));
- if (isAsian) {
+ if (isAsianLang(language)) {
var firstd = scanForChars(dmy, "d");
if (dmy.charAt(firstd-1) == '/') {
firstd--;
@@ -717,54 +641,23 @@ module.exports = {
break;
case "ydm":
- // console.log("Length " + len + " order ydm");
+ // console.log("Length " + len + " order ydm\n");
calendar.date.dm[lenAbbr] = rtlify(dmy.substring(scanForChars(dmy, "d")));
calendar.date.my[lenAbbr] = rtlify(dmy.substring(0, scanForChars(dmy, "d")) +
dmy.substring(scanForChars(dmy, "M")));
break;
}
- if (standAloneYM(cldrCalendar, script)) {
- if (!calendar.date.mys) {
- calendar.date.mys = {};
- }
- calendar.date.mys[lenAbbr] = calendar.date.my[lenAbbr].replace(/MMMM/, "LLLL").replace(/MMM/, "LLL");
- }
-
- if (standAloneM(cldrCalendar, script) || isAsian) {
- if (!calendar.date.l) {
- calendar.date.l = {};
- }
- if (isAsian) {
- calendar.date.l[lenAbbr] = getAvailableFormat(cldrCalendar, "M").replace(/M+/, calendar.date.m[lenAbbr]);
- } else {
- calendar.date.l[lenAbbr] = calendar.date.m[lenAbbr].replace(/M/g, "L");
- }
- }
-
- if (standAloneW(cldrCalendar, script)) {
- if (!calendar.date.e) {
- calendar.date.e = {};
- }
+ if (usesStandAlone) {
+ calendar.date.my[lenAbbr] = calendar.date.my[lenAbbr].replace(/MMMM/, "LLLL").replace(/MMM/, "LLL");
calendar.date.e[lenAbbr] = calendar.date.w[lenAbbr].replace(/E/g, "c");
+ calendar.date.l[lenAbbr] = calendar.date.m[lenAbbr].replace(/M/g, "L");
}
- if (standAloneY(cldrCalendar, script) || isAsian) {
- if (!calendar.date.r) {
- calendar.date.r = {};
- }
- if (isAsian) {
- calendar.date.r[lenAbbr] = getAvailableFormat(cldrCalendar, "y").replace(/y+/, calendar.date.y[lenAbbr]);
- } else {
- calendar.date.r[lenAbbr] = calendar.date.y[lenAbbr].replace(/y/g, "r");
- }
- }
-
- if (isAsian) {
- if (!calendar.date.a) {
- calendar.date.a = {};
- }
+ if (isAsianLang(language)) {
calendar.date.a[lenAbbr] = getAvailableFormat(cldrCalendar, "d").replace(/d+/, calendar.date.d[lenAbbr]);
+ calendar.date.l[lenAbbr] = getAvailableFormat(cldrCalendar, "M").replace(/M+/, calendar.date.m[lenAbbr]);
+ calendar.date.r[lenAbbr] = getAvailableFormat(cldrCalendar, "y").replace(/y+/, calendar.date.y[lenAbbr]);
}
tmp = wTemplate.replace(/\{date\}/, calendar.date.dm[lenAbbr]);
@@ -775,20 +668,20 @@ module.exports = {
switch (dateOrder2(dmw)) {
case "dmw":
- // console.log("Length " + len + " dw order dmw");
+ // console.log("Length " + len + " dw order dmw\n");
calendar.date.dw[lenAbbr] = rtlify(dmw.substring(0, scanForChars(dmw, "M")) +
dmw.substring(scanForChars(dmw, "Ec")));
break;
case "wdm":
- // console.log("Length " + len + " dw order wdm");
+ // console.log("Length " + len + " dw order wdm\n");
calendar.date.dw[lenAbbr] = rtlify(dmw.substring(0, scanForLastChars(dmw, "d")));
break;
case "mdw":
- // console.log("Length " + len + " dw order mdw");
+ // console.log("Length " + len + " dw order mdw\n");
calendar.date.dw[lenAbbr] = rtlify(dmw.substring(scanForChars(dmw, "d")));
break;
case "wmd":
- // console.log("Length " + len + " dw order wmd");
+ // console.log("Length " + len + " dw order wmd\n");
calendar.date.dw[lenAbbr] = rtlify(dmw.substring(0, scanForChars(dmw, "M")) +
dmw.substring(scanForChars(dmw, "d")));
break;
@@ -812,7 +705,7 @@ module.exports = {
var H, h;
if (longtime.indexOf("H") > -1) {
- // console.log("24-hour locale. Longtime: " + longtime);
+ // console.log("24-hour locale. Longtime: " + longtime + "\n");
calendar.time["24"]["h"] = strippedLongTime.replace(/[^H]/g, "");
calendar.time["24"]["m"] = strippedLongTime.replace(/[^m]/g, "");
calendar.time["24"]["s"] = strippedLongTime.replace(/[^s]/g, "");
@@ -894,7 +787,7 @@ module.exports = {
calendar.time["12"]["ahmsz"] = rtlify(zTemplate.replace(/\{time\}/, aTemplate.replace(/\{time\}/, calendar.time["12"]["hms"])));
} else {
- // console.log("12-hour locale. Longtime: " + longtime);
+ // console.log("12-hour locale. Longtime: " + longtime + "\n");
order = timeOrder(longtime);
calendar.time["12"]["h"] = longtime.replace(/[^h]/g, "");
@@ -1039,14 +932,15 @@ module.exports = {
var dateOnlyTemplate = "{date} – {date}";
var dmyiLib = "dmy"
+ var dmyOrder;
var dateRangeTemplate = dateRangeTemplateOrder;
var regExp = /[^s^\s^\-^\.^\/^\u200f]y+/;
var regExp2 = /\bd+\b/;
var regExp3 = /\by+\b/;
- var regExp4 = /\b[LM]+\b/;
+ var regExp4 = /\bM+\b/;
- var dmyOrdercldr = dateOrder(cldrFormats[len]);
+ dmyOrdercldr = dateOrder(cldrFormats[len]);
if (calendar.date[dmyiLib] !== undefined && calendar.date[dmyiLib][lenAbbr] !== undefined) {
dateRangeTemplate = replaceFormats(dateRangeTemplate, "{date}", calendar.date[dmyiLib][lenAbbr]);
@@ -1060,7 +954,7 @@ module.exports = {
cFmt0 = replaceFormats(cFmt0, "{date}", calendar.date[dmyiLib][lenAbbr]);
if (language === 'nnh' && (lenAbbr === 'f' || lenAbbr === 'l' )) { //'lyɛ'̌ʼ d 'na' MMMM, yyyy
- cFmt0 = cFmt0.replace(regExp3, "{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt0 = cFmt0.replace(regExp3, "{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
} else {
cFmt0 = replaceFormats(cFmt0, startTime);
}
@@ -1073,7 +967,7 @@ module.exports = {
cFmt1 = dateRangeTemplate;
if (language === 'nnh' && (lenAbbr === 'f' || lenAbbr === 'l' )) { //'lyɛ'̌ʼ d 'na' MMMM, yyyy
- cFmt1 = cFmt1.replace(regExp3, "{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt1 = cFmt1.replace(regExp3, "{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
} else {
cFmt1 = replaceFormats(dateRangeTemplate, startTime);
}
@@ -1098,10 +992,10 @@ module.exports = {
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date[dmyiLib][lenAbbr]);
if (language === 'nnh' && (lenAbbr === 'f' || lenAbbr === 'l' )) { //'lyɛ'̌ʼ d 'na' MMMM, yyyy
- cFmt10 = cFmt10.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt10 = cFmt10.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
} else {
- cFmt10 = cFmt10.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt10 = cFmt10.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
}
cFmt10 = cFmt10.replace(/\'/g,"").replace(/\s\s/g," ");
@@ -1111,42 +1005,41 @@ module.exports = {
cFmt11 = replaceFormats(cFmt11, "{date}", calendar.date["dm"][lenAbbr]);
if (language === 'nnh' && (lenAbbr === 'f' || lenAbbr === 'l' )) { //'lyɛ'̌ʼ d 'na' MMMM, yyyy
- cFmt11 = cFmt11.replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt11 = cFmt11.replace(/M+/, "{sm}").replace(regExp2,"{sd}");
} else {
cFmt11 = replaceFormats(cFmt11, startTime);
}
cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt11 = cFmt11.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt11 = cFmt11.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c11"][lenAbbr] = cFmt11;
cFmt12 = dateOnlyTemplate;
if (language === 'nnh' && (lenAbbr === 'f' || lenAbbr === 'l' )) { //'lyɛ'̌ʼ d 'na' MMMM, yyyy
- cFmt12 = cFmt12.replace(regExp3, "{sy}").replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt12 = cFmt12.replace(regExp3, "{sy}").replace(/M+/, "{sm}").replace(regExp2,"{sd}");
} else {
cFmt12 = replaceFormats(cFmt12, startTime);
}
cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt12 = cFmt12.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt12 = cFmt12.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt12 = cFmt12.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c12"][lenAbbr] = cFmt12;
//cFmt20 = dateOnlyTemplate;
cFmt20 = "{date} – {date}";
- var myFormat = calendar.date["mys"] ? calendar.date["mys"][lenAbbr] : calendar.date["my"][lenAbbr];
- cFmt20 = replaceFormats(cFmt20, "{date}", myFormat);
+ cFmt20 = replaceFormats(cFmt20, "{date}", calendar.date["my"][lenAbbr]);
- cFmt20 = cFmt20.replace(/[LM]+/,"{sm}").replace(/L+/, "{sm}").replace(regExp3, "{sy}");
- cFmt20 = replaceFormats(cFmt20, "{date}", myFormat);
+ cFmt20 = cFmt20.replace(/M+/,"{sm}").replace(/L+/, "{sm}").replace(regExp3, "{sy}");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date["my"][lenAbbr]);
if (language === 'nnh' && (lenAbbr === 'f' || lenAbbr === 'l' )) { //'lyɛ'̌ʼ d 'na' MMMM, yyyy
- cFmt20 = cFmt20.replace(regExp3, "{ey}").replace(/[LM]+/, "{em}").replace(/L+/, "{em}");
+ cFmt20 = cFmt20.replace(regExp3, "{ey}").replace(/M+/, "{em}").replace(/L+/, "{em}");
} else {
- cFmt20 = cFmt20.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(/L+/, "{em}");
+ cFmt20 = cFmt20.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(/L+/, "{em}");
}
cFmt20 = cFmt20.replace(/\'/g,"").replace(/\s\s/g," ");
@@ -1155,6 +1048,7 @@ module.exports = {
cFmt30 = "{sy} – {ey}";
calendar.range["c30"][lenAbbr] = isRtl? "\u200F" + cFmt30 : cFmt30;
+
break;
case "mdy":
//console.log("{date}{time}, mdy");
@@ -1170,7 +1064,7 @@ module.exports = {
cFmt1 = replaceFormats(dateRangeTemplate, startTime);
cFmt1 = replaceFormats(cFmt1,"{time}", "{st}");
cFmt1 = replaceFormats(cFmt1,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt1 = cFmt1.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt1 = cFmt1.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt1 = replaceFormats(cFmt1, "{time}", "{et}");
cFmt1 = cFmt1.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c01"][lenAbbr] = cFmt1;
@@ -1182,12 +1076,12 @@ module.exports = {
if (lenAbbr === 's') {
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date[dmyiLib][lenAbbr]);
cFmt10 = replaceFormats(cFmt10, startTime);
- cFmt10 = cFmt10.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt10 = cFmt10.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
} else {
cFmt10 = replaceFormats(cFmt10, startTime);
cFmt10 = cFmt10.replace(/[\s\/]{sy}/,"");
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt10 = cFmt10.replace(regExp,"{ey}").replace(/[LM]+/, "").replace(regExp2,"{ed}");
+ cFmt10 = cFmt10.replace(regExp,"{ey}").replace(/M+/, "").replace(regExp2,"{ed}");
cFmt10 = cFmt10.replace(/}, –/, "} –").replace("– /{", "– {" );
}
@@ -1198,24 +1092,23 @@ module.exports = {
cFmt11 = replaceFormats(cFmt11, startTime);
cFmt11 = cFmt11.replace(/[\,][s\s\-\.\/^\u200f]{sy}/,"").replace(/[\/]{sy}/,"");
cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt11 = cFmt11.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt11 = cFmt11.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c11"][lenAbbr] = cFmt11;
cFmt12 = dateOnlyTemplate;
cFmt12 = replaceFormats(cFmt12, startTime);
cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt12 = cFmt12.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt12 = cFmt12.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt12 = cFmt12.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c12"][lenAbbr] = cFmt12;
- cFmt20 = "{date} – {date}";
- var myFormat = calendar.date["mys"] ? calendar.date["mys"][lenAbbr] : calendar.date["my"][lenAbbr];
- cFmt20 = replaceFormats(cFmt20, "{date}", myFormat);
- cFmt20 = cFmt20.replace(regExp,"{sy}").replace(/[LM]+/, "{sm}");
+ cFmt20 = dateOnlyTemplate;
+ cFmt20 = replaceFormats(cFmt20, startTime);
+
cFmt20 = cFmt20.replace(/[\W\s]{sd}/,"");
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
- cFmt20 = cFmt20.replace(regExp,"{ey}").replace(/[LM]+/, "{em}");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date[dmyiLib][lenAbbr]);
+ cFmt20 = cFmt20.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(/[\W]d+/,"");
cFmt20 = cFmt20.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c20"][lenAbbr] = cFmt20;
@@ -1240,9 +1133,9 @@ module.exports = {
cFmt1 = replaceFormats(cFmt1,"{date}", calendar.date[dmyiLib][lenAbbr]);
if (language === 'lt' && (lenAbbr === 'f' || lenAbbr === 'l')) {
- cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(/[^\'^s]d+/," {ed}")
+ cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(/[^\'^s]d+/," {ed}")
} else {
- cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
}
cFmt1 = replaceFormats(cFmt1, "{time}", "{et}");
@@ -1256,9 +1149,9 @@ module.exports = {
cFmt2 = replaceFormats(cFmt2,"{date}", calendar.date[dmyiLib][lenAbbr]);
if (language === 'lt' && (lenAbbr === 'f' || lenAbbr === 'l')) {
- cFmt2 = cFmt2.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(/[^\'^s]d+/," {ed}")
+ cFmt2 = cFmt2.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(/[^\'^s]d+/," {ed}")
} else {
- cFmt2 = cFmt2.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt2 = cFmt2.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
}
cFmt2 = replaceFormats(cFmt2, "{time}", "{et}");
@@ -1272,9 +1165,9 @@ module.exports = {
if (language === 'lt' && (lenAbbr === 'f' || lenAbbr === 'l')) {
- cFmt3 = cFmt3.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(/[^\'^s]d+/," {ed}");
+ cFmt3 = cFmt3.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(/[^\'^s]d+/," {ed}");
} else {
- cFmt3 = cFmt3.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt3 = cFmt3.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
}
cFmt3 = replaceFormats(cFmt3, "{time}", "{et}");
@@ -1286,7 +1179,7 @@ module.exports = {
if (language === 'lt'&& (lenAbbr === 'f' || lenAbbr === 'l')) {
cFmt10 = cFmt10.replace(/{date}/, "{ed} 'd'.");
- } else if(isAsian){
+ } else if(isAsianLang(language)){
if (cFmt10.search(/日|일/) !== -1) {
cFmt10 = cFmt10.replace(/{date}/, calendar.date["a"][lenAbbr]);
cFmt10 = cFmt10.replace(/[^s]d+/, " {ed}");
@@ -1306,21 +1199,21 @@ module.exports = {
cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date[dmyiLib][lenAbbr]);
if (language === 'lt' && (lenAbbr === 'f' || lenAbbr === 'l')) {
- cFmt11 = cFmt11.replace(/y+[\s\-\.\/^\u200f]/,"").replace(/[LM]+/, "{em}").replace(/[^'^s^]d+/, " {ed}");
+ cFmt11 = cFmt11.replace(/y+[\s\-\.\/^\u200f]/,"").replace(/M+/, "{em}").replace(/[^'^s^]d+/, " {ed}");
cFmt11 = cFmt11.replace(/'m'. {em}/, " {em}");
} else if (language === 'eu' && (lenAbbr === 'f' || lenAbbr === 'l')) {
- cFmt11 = cFmt11.replace(/y+\(\'e\'\)\'ko\'/,"").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
- } else if (isAsian) {
+ cFmt11 = cFmt11.replace(/y+\(\'e\'\)\'ko\'/,"").replace(/M+/, "{em}").replace(regExp2,"{ed}");
+ } else if (isAsianLang(language)) {
if (lenAbbr === 's' || lenAbbr === 'm') {
- cFmt11 = cFmt11.replace(/\by+/,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(/[^s^\s]y+/,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
} else {
- cFmt11 = cFmt11.replace(/\by+\W/,"").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(/[^s^\s]y+\W/,"").replace(/M+/, "{em}").replace(regExp2,"{ed}");
}
} else if (lenAbbr ==='s' || lenAbbr ==='m') {
- cFmt11 = cFmt11.replace(/[^s^\s^\u200f]y+/,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(/[^s^\s^\u200f]y+/,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
} else {
- cFmt11 = cFmt11.replace(/[^s^\s^\u200f]y+\W+/,"").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(/[^s^\s^\u200f]y+\W+/,"").replace(/M+/, "{em}").replace(regExp2,"{ed}");
}
cFmt11 = cFmt11.replace(/\'/g,"").replace(/\s\s/g," ");
@@ -1333,26 +1226,33 @@ module.exports = {
cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date[dmyiLib][lenAbbr]);
if (language === 'lt' && (lenAbbr === 'f' || lenAbbr === 'l')) {
- cFmt12 = cFmt12.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(/[^'^s^]d+/, " {ed}");
+ cFmt12 = cFmt12.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(/[^'^s^]d+/, " {ed}");
} else {
- cFmt12 = cFmt12.replace(regExp,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt12 = cFmt12.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
}
cFmt12 = cFmt12.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c12"][lenAbbr] = cFmt12;
cFmt20 = "{date} – {date}";
- var myFormat = calendar.date["mys"] ? calendar.date["mys"][lenAbbr] : calendar.date["my"][lenAbbr];
- cFmt20 = replaceFormats(cFmt20, "{date}", myFormat);
+ cFmt20 = replaceFormats(cFmt20, "{date}", calendar.date["my"][lenAbbr]);
- cFmt20 = cFmt20.replace(/[LM]+/,"{sm}").replace(/L+/,"{sm}").replace(/y+/, "{sy}");
- cFmt20 = replaceFormats(cFmt20, "{date}", myFormat);
- cFmt20 = cFmt20.replace(regExp, "{ey}").replace(/[LM]+/, "{em}").replace(/L+/, "{em}");
+ cFmt20 = cFmt20.replace(/M+/,"{sm}").replace(/L+/,"{sm}").replace(/y+/, "{sy}");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date["my"][lenAbbr]);
+ cFmt20 = cFmt20.replace(regExp,"{ey}").replace(/M+/, "{em}").replace(/L+/, "{em}");
cFmt20 = cFmt20.replace(/\'/g,"").replace(/\s\s/g," ").trim();
calendar.range["c20"][lenAbbr] = cFmt20;
- cFmt30 = "{sy} – {ey}";
+ if (isAsianLang(language)) {
+ cFmt30="y – y";
+ cFmt30 = cFmt30.replace(/y/g,calendar.date["r"][lenAbbr]);
+ cFmt30 = cFmt30.replace(/y+/, "{sy}");
+ cFmt30 = cFmt30.replace(/[^s^\s]y+/, "{ey}");
+
+ } else {
+ cFmt30 = "{sy} – {ey}";
+ }
calendar.range["c30"][lenAbbr] = isRtl? "\u200F" + cFmt30 : cFmt30;
@@ -1361,7 +1261,7 @@ module.exports = {
case "ydm":
cFmt0 = replaceFormats(cFmt0, "{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt0 = cFmt0.replace(regExp3,"{sy}").replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt0 = cFmt0.replace(regExp3,"{sy}").replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt0 = replaceFormats(cFmt0,"{time}", "{st}");
cFmt0 = replaceFormats(cFmt0,"{time}", "{et}");
cFmt0 = cFmt0.replace(/\'/g,"").replace(/\s\s/g," ");
@@ -1369,10 +1269,10 @@ module.exports = {
//{sy} {sd}{sm} {st} - {ey} {ed}{em} {et}
cFmt1 = dateRangeTemplate;
- cFmt1 = cFmt1.replace(regExp3,"{sy}").replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt1 = cFmt1.replace(regExp3,"{sy}").replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt1 = replaceFormats(cFmt1,"{time}", "{st}");
cFmt1 = replaceFormats(cFmt1,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt1 = replaceFormats(cFmt1, "{time}", "{et}");
cFmt1 = cFmt1.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c01"][lenAbbr] = cFmt1;
@@ -1381,29 +1281,26 @@ module.exports = {
//{sy} {sd}{sm} – {ed}{em}
cFmt10 = dateOnlyTemplate;
- cFmt10 = cFmt10.replace(regExp3,"{sy}").replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt10 = cFmt10.replace(regExp3,"{sy}").replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt10 = replaceFormats(cFmt10,"{date}",calendar.date["dm"][lenAbbr]);
- cFmt10 = cFmt10.replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt10 = cFmt10.replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt10 = cFmt10.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c10"][lenAbbr] = cFmt10;
//{sy} {sd}{sm} – {ey} {ed}{em}
cFmt11 = dateOnlyTemplate;
- cFmt11 = cFmt11.replace(regExp3,"{sy}").replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt11 = cFmt11.replace(regExp3,"{sy}").replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt11 = cFmt11.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt11 = cFmt11.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c11"][lenAbbr] = cFmt11;
calendar.range["c12"][lenAbbr] = cFmt11;
- cFmt20 = "{date} – {date}";
- var myFormat = calendar.date["mys"] ? calendar.date["mys"][lenAbbr] : calendar.date["my"][lenAbbr];
- cFmt20 = replaceFormats(cFmt20, "{date}", myFormat);
-
- cFmt20 = cFmt20.replace(regExp3,"{sy}").replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt20 = dateOnlyTemplate;
+ cFmt20 = cFmt20.replace(regExp3,"{sy}").replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt20 = cFmt20.replace(/{sd}\W/,"");
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
- cFmt20 = cFmt20.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(/\bd+\W/,"");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date[dmyiLib][lenAbbr]);
+ cFmt20 = cFmt20.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(/\bd+\W/,"");
cFmt20 = cFmt20.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c20"][lenAbbr] = cFmt20;
@@ -1438,8 +1335,6 @@ module.exports = {
} else {
cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(regExp4, "{em}").replace(regExp2,"{ed}");
}
- } else {
- cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(regExp4, "{em}").replace(regExp2,"{ed}");
}
cFmt1 = cFmt1.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c01"][lenAbbr] = cFmt1;
@@ -1449,9 +1344,10 @@ module.exports = {
//{sd} - {ed}{em}{ey}
cFmt10 = "{date} – {date}";
+ //cFmt10 = replaceFormats(cFmt10, startTime);
if (language === 'vi') {
if (lenAbbr === 'l') {
- cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date["d"][lenAbbr]);
+ cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date["dm"][lenAbbr]);
cFmt10 = cFmt10.replace(" 'tháng' MM", "");
cFmt10 = cFmt10.replace(regExp2,"{sd}")
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date["dmy"][lenAbbr]);
@@ -1461,12 +1357,8 @@ module.exports = {
cFmt10 = cFmt10.replace(regExp2,"{sd}")
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date["dmy"][lenAbbr]);
cFmt10 = cFmt10.replace(regExp2, "{ed}").replace(regExp4, "{em}").replace(regExp3, "{ey}");
+
}
- } else {
- cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date["d"][lenAbbr]);
- cFmt10 = cFmt10.replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
- cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt10 = cFmt10.replace(/\by+/,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
}
cFmt10 = cFmt10.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c10"][lenAbbr] = cFmt10;
@@ -1478,22 +1370,11 @@ module.exports = {
cFmt11 = cFmt11.replace(regExp2,"{sd}").replace(regExp4,"{sm}");
cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date["dmy"][lenAbbr]);
cFmt11 = cFmt11.replace(regExp2, "{ed}").replace(regExp4, "{em}").replace(/\b\wy+\b/, "{ey}");
- } else {
- cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date["dm"][lenAbbr]);
- cFmt11 = cFmt11.replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
- cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date[dmyiLib][lenAbbr]);
- if (lenAbbr === 's') {
- cFmt11 = cFmt11.replace(regExp3,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
- } else {
- cFmt11 = cFmt11.replace(/\by+/,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
- }
}
cFmt11 = cFmt11.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c11"][lenAbbr] = cFmt11;
- // dmy - dmy
- cFmt12 = "{date} – {date}";
- cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date[dmyiLib][lenAbbr]);
+ cFmt12 = dateOnlyTemplate;
if (language === 'vi') {
if (lenAbbr === 'l') {
@@ -1505,53 +1386,33 @@ module.exports = {
cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date["dmy"][lenAbbr]);
cFmt12 = cFmt12.replace(regExp2, "{ed}").replace(regExp4, "{em}").replace(/\b\y+\b/, "{ey}");
}
- } else {
- cFmt12 = cFmt12.replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}").replace(regExp3,"{sy}");
- cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date[dmyiLib][lenAbbr]);
-
- if (lenAbbr === 's') {
- cFmt12 = cFmt12.replace(regExp3,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
- } else {
- cFmt12 = cFmt12.replace(/\by+/,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
- }
}
cFmt12 = cFmt12.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c12"][lenAbbr] = cFmt12;
- cFmt20 = "{date} – {date}";
- var myFormat = calendar.date["mys"] ? calendar.date["mys"][lenAbbr] : calendar.date["my"][lenAbbr];
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
+ cFmt20 = dateOnlyTemplate;
if (language === 'vi') {
if (lenAbbr === 'l') {
cFmt20 = cFmt20.replace(/'Ngày' dd 'tháng' /,"");
- cFmt20 = cFmt20.replace(/[LM]+/,"{sm}").replace(/\b\wy+\b/, "{sy}");
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
+ cFmt20 = cFmt20.replace(/M+/,"{sm}").replace(/\b\wy+\b/, "{sy}");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date["dmy"][lenAbbr]);
cFmt20 = cFmt20.replace(/'Ngày' dd 'tháng' /,"");
- cFmt20 = cFmt20.replace(/[LM]+/,"{em}").replace(/yyyy/, "{ey}");
+ cFmt20 = cFmt20.replace(/M+/,"{em}").replace(/yyyy/, "{ey}");
} else if(lenAbbr === 'f') {
cFmt20 = cFmt20.replace(/d+\s/,"");
- cFmt20 = cFmt20.replace(/[LM]+/,"{sm}").replace(regExp3, "{sy}");
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
- cFmt20 = cFmt20.replace(/\bd+/,"");
- cFmt20 = cFmt20.replace(/[LM]+/,"{em}").replace(regExp3, "{ey}");
+ cFmt20 = cFmt20.replace(/M+/,"{sm}").replace(regExp3, "{sy}");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date["dmy"][lenAbbr]);
+ cFmt20 = cFmt20.replace(/[^s]d+/,"");
+ cFmt20 = cFmt20.replace(/M+/,"{em}").replace(regExp3, "{ey}");
} else {
cFmt20 = cFmt20.replace(/d+\W/,"");
- cFmt20 = cFmt20.replace(/[LM]+/,"{sm}").replace(regExp3, "{sy}");
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
+ cFmt20 = cFmt20.replace(/M+/,"{sm}").replace(regExp3, "{sy}");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date["dmy"][lenAbbr]);
cFmt20 = cFmt20.replace(/d+\W/,"");
- cFmt20 = cFmt20.replace(/[LM]+/,"{em}").replace(regExp3, "{ey}");
- }
- } else {
- cFmt20 = cFmt20.replace(/[LM]+/, "{sm}").replace(regExp3,"{sy}");
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
-
- if (lenAbbr === 's') {
- cFmt20 = cFmt20.replace(regExp3,"{ey}").replace(/[LM]+/,"{em}");
- } else {
- cFmt20 = cFmt20.replace(/\by+/,"{ey}").replace(/[LM]+/,"{em}");
+ cFmt20 = cFmt20.replace(/M+/,"{em}").replace(regExp3, "{ey}");
}
}
cFmt20 = cFmt20.replace(/\'/g,"").replace(/\s\s/g," ");
@@ -1574,7 +1435,7 @@ module.exports = {
cFmt1 = replaceFormats(dateRangeTemplate, startTime);
cFmt1 = replaceFormats(cFmt1,"{time}", "{st}");
cFmt1 = replaceFormats(cFmt1,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt1 = cFmt1.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
cFmt1 = replaceFormats(cFmt1, "{time}", "{et}");
cFmt1 = cFmt1.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c01"][lenAbbr] = cFmt1;
@@ -1586,14 +1447,14 @@ module.exports = {
if (lenAbbr === 's') { //mdy-mdy
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date[dmyiLib][lenAbbr]);
cFmt10 = replaceFormats(cFmt10, startTime);
- cFmt10 = cFmt10.replace(regExp3,"{sy}").replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt10 = cFmt10.replace(regExp3,"{sy}").replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt10 = cFmt10.replace(regExp3,"{ey}").replace(/[LM]+/, "{em}").replace(regExp2,"{ed}");
+ cFmt10 = cFmt10.replace(regExp3,"{ey}").replace(/M+/, "{em}").replace(regExp2,"{ed}");
} else { //m d-d y
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date["dm"][lenAbbr]);
- cFmt10 = cFmt10.replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt10 = cFmt10.replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt10 = replaceFormats(cFmt10,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt10 = cFmt10.replace(/[^s^\s]y+/,"{ey}").replace(/[LM]+/,"").replace(regExp2,"{ed}");
+ cFmt10 = cFmt10.replace(/[^s^\s]y+/,"{ey}").replace(/M+/,"").replace(regExp2,"{ed}");
}
cFmt10 = cFmt10.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c10"][lenAbbr] = cFmt10;
@@ -1601,12 +1462,12 @@ module.exports = {
//md - mdy
cFmt11 = "{date} – {date}";
cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date["dm"][lenAbbr]);
- cFmt11 = cFmt11.replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}");
+ cFmt11 = cFmt11.replace(/M+/, "{sm}").replace(regExp2,"{sd}");
cFmt11 = replaceFormats(cFmt11,"{date}", calendar.date[dmyiLib][lenAbbr]);
if (lenAbbr === 's') {
- cFmt11 = cFmt11.replace(regExp3,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(regExp3,"{ey}").replace(/M+/,"{em}").replace(regExp2,"{ed}");
} else {
- cFmt11 = cFmt11.replace(/[^s^\s]y+/,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
+ cFmt11 = cFmt11.replace(/[^s^\s]y+/,"{ey}").replace(/M+/,"{em}").replace(regExp2,"{ed}");
}
cFmt11 = cFmt11.replace(/\'/g,"").replace(/\s\s/g," ");
@@ -1615,29 +1476,28 @@ module.exports = {
//mdy - mdy
cFmt12 = "{date} – {date}";
cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date[dmyiLib][lenAbbr]);
- cFmt12 = cFmt12.replace(/[LM]+/, "{sm}").replace(regExp2,"{sd}").replace(regExp3,"{sy}");
+ cFmt12 = cFmt12.replace(/M+/, "{sm}").replace(regExp2,"{sd}").replace(regExp3,"{sy}");
cFmt12 = replaceFormats(cFmt12,"{date}", calendar.date[dmyiLib][lenAbbr]);
if (lenAbbr === 's') {
- cFmt12 = cFmt12.replace(regExp3,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
+ cFmt12 = cFmt12.replace(regExp3,"{ey}").replace(/M+/,"{em}").replace(regExp2,"{ed}");
} else {
- cFmt12 = cFmt12.replace(regExp3,"{ey}").replace(/[LM]+/,"{em}").replace(regExp2,"{ed}");
+ cFmt12 = cFmt12.replace(/[^s]y+/,"{ey}").replace(/M+/,"{em}").replace(regExp2,"{ed}");
}
- cFmt12 = cFmt12.replace(/\'/g,"").replace(/\s\s/g," ");
+ cFmt12 = cFmt1.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c12"][lenAbbr] = cFmt12;
//my - my
cFmt20 = "{date} – {date}";
- var myFormat = calendar.date["mys"] ? calendar.date["mys"][lenAbbr] : calendar.date["my"][lenAbbr];
- cFmt20 = replaceFormats(cFmt20,"{date}", myFormat);
- cFmt20 = cFmt20.replace(/[LM]+/, "{sm}").replace(regExp3,"{sy}");
- cFmt20 = replaceFormats(cFmt20, "{date}", myFormat);
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date["my"][lenAbbr]);
+ cFmt20 = cFmt20.replace(/M+/, "{sm}").replace(regExp3,"{sy}");
+ cFmt20 = replaceFormats(cFmt20,"{date}", calendar.date["my"][lenAbbr]);
if (lenAbbr === 's') {
- cFmt20 = cFmt20.replace(regExp3,"{ey}").replace(/[LM]+/,"{em}");
+ cFmt20 = cFmt20.replace(regExp3,"{ey}").replace(/M+/,"{em}");
} else {
- cFmt20 = cFmt20.replace(/[^s^\s]y+/,"{ey}").replace(/[LM]+/,"{em}");
+ cFmt20 = cFmt20.replace(/[^s^\s]y+/,"{ey}").replace(/M+/,"{em}");
}
cFmt20 = cFmt20.replace(/\'/g,"").replace(/\s\s/g," ");
calendar.range["c20"][lenAbbr] = cFmt20;
@@ -1648,10 +1508,11 @@ module.exports = {
break;
case "ymd":
console.log("*** No use cases. [Need to Implement]{time}{date} : " +dmyOrdercldr+"] " + language + "-"+script+ "-"+region +" ******");
+
break;
default:
console.log("*** No use cases. Need to Implement]{time}{date} : " +dmyOrdercldr+"] " + language + "-"+script+ "-"+region +" ******");
- break;
+ break;
}
}
}
@@ -1664,7 +1525,7 @@ module.exports = {
return formats;
},
- createSystemResources: function (cldrData, language, script) {
+ createSystemResources: function (cldrData, language) {
var formats,
cldrCalendar,
calendarNameSuffix,
@@ -1686,8 +1547,11 @@ module.exports = {
calendarNameSuffix = (calendarName !== "gregorian") ? "-" + calendarName : "";
+ var usesStandAlone = standAlone(cldrCalendar);
+
// now generate all the month names
var part = cldrCalendar.months.format;
+ var isAsian = isAsianLang(language);
if (isAsianLang(language)) {
for (prop in part.wide) {
formats["MMMM" + prop + calendarNameSuffix] = part.wide[prop].substring(0, part.wide[prop].length-1);
@@ -1715,20 +1579,22 @@ module.exports = {
}
}
}
- if (standAloneM(cldrCalendar, script) || standAloneYM(cldrCalendar, script)) {
+ if (usesStandAlone) {
part = cldrCalendar.months["stand-alone"];
for (prop in part.wide) {
- formats["LLLL" + prop + calendarNameSuffix] = part.wide[prop];
- formats["LLL" + prop + calendarNameSuffix] = part.abbreviated[prop];
+ var month = this.ilibMonth(calendarName, prop);
+
+ formats["LLLL" + month + calendarNameSuffix] = part.wide[prop];
+ formats["LLL" + month + calendarNameSuffix] = part.abbreviated[prop];
if (language === "mn") {
- formats["LL" + prop + calendarNameSuffix] = part.abbreviated[prop].substring(0,1);
- formats["L" + prop + calendarNameSuffix] = part.narrow[prop];
+ formats["LL" + month + calendarNameSuffix] = part.abbreviated[prop].substring(0,1);
+ formats["L" + month + calendarNameSuffix] = part.narrow[prop];
} else if (language === "vi") {
- formats["LL" + prop + calendarNameSuffix] = part.abbreviated[prop].substring(0,2) + prop;
- formats["L" + prop + calendarNameSuffix] = part.abbreviated[prop].substring(0,1) + prop;
+ formats["LL" + month + calendarNameSuffix] = part.abbreviated[prop].substring(0,2) + prop;
+ formats["L" + month + calendarNameSuffix] = part.abbreviated[prop].substring(0,1) + prop;
} else {
- formats["LL" + prop + calendarNameSuffix] = part.abbreviated[prop].substring(0,2);
- formats["L" + prop + calendarNameSuffix] = part.narrow[prop];
+ formats["LL" + month + calendarNameSuffix] = part.abbreviated[prop].substring(0,2);
+ formats["L" + month + calendarNameSuffix] = part.narrow[prop];
}
}
}
@@ -1741,7 +1607,7 @@ module.exports = {
formats["EE" + dayNumbers[prop] + calendarNameSuffix] = part.short[prop];
formats["E" + dayNumbers[prop] + calendarNameSuffix] = part.narrow[prop];
}
- if (standAloneW(cldrCalendar, script)) {
+ if (usesStandAlone) {
part = cldrCalendar.days["stand-alone"];
for (prop in part.wide) {
formats["cccc" + dayNumbers[prop] + calendarNameSuffix] = part.wide[prop];
@@ -1765,33 +1631,33 @@ module.exports = {
createDurationResourceDetail: function (cldrUnitData, durationObject, length, language, script) {
var durationSysres = {};
var durationSysresTest = {};
+ var cldrDateFieldData = {};
+ var dataLength = length;
+
+ var isRtl = (rtlLanguages.indexOf(language) > -1) && (!script || rtlScripts.indexOf(script) > 0);
for(duration in durationObject) {
var durationKey = "duration-" + duration;
var temp;
var fullStr = "";
- if (language === "ko" && duration === "millisecond") {
- fullStr = "#{num}밀리초";
- } else {
- var unitNames = ["zero", "one", "two", "few", "many", "other"];
-
- for (var j = 0; j < unitNames.length; j++){
- name = unitNames[j];
- nameValue = "unitPattern-count-" + name;
- if (cldrUnitData[durationKey] && typeof(cldrUnitData[durationKey][nameValue]) !== 'undefined') {
- durationSysresTest[durationObject[duration]] = {};
- if (fullStr.length > 0) {
- fullStr += "|";
- }
+ var unitNames = ["zero", "one", "two", "few", "many", "other"];
+
+ for (var j = 0; j < unitNames.length; j++){
+ name = unitNames[j];
+ nameValue = "unitPattern-count-" + name;
+ if (cldrUnitData[durationKey] && typeof(cldrUnitData[durationKey][nameValue]) !== 'undefined') {
+ durationSysresTest[durationObject[duration]] = {};
+ if (fullStr.length > 0) {
+ fullStr += "|";
+ }
- temp = cldrUnitData[durationKey][nameValue].replace("{0}", "{num}");
+ temp = cldrUnitData[durationKey][nameValue].replace("{0}", "{num}");
- if (unitNames[j] == "other") {
- fullStr += "#" + temp;
- } else {
- fullStr += name +"#" + temp;
- }
+ if (unitNames[j] == "other") {
+ fullStr += "#" + temp;
+ } else {
+ fullStr += name +"#" + temp;
}
}
}
@@ -1861,11 +1727,11 @@ module.exports = {
result = module.exports.createDurationResourceDetail(unit, durationObject[prop], "long", language, script);
sysres.push(result);
break;
- case "durationPropertiesMedium":
+ case "durationPropertiesMedium":
unit = table.narrow;
result = module.exports.createDurationResourceDetail(unit, durationObject[prop], "medium", language, script);
sysres.push(result);
- break;
+ break;
case "durationPropertiesShort":
unit = table.narrow;
result = module.exports.createDurationResourceDetail(unit, durationObject[prop], "short", language, script);
diff --git a/tools/cldr/gendatefmts2.js b/tools/cldr/gendatefmts2.js
index 9bcc0acb5d..fc6f0bb702 100644
--- a/tools/cldr/gendatefmts2.js
+++ b/tools/cldr/gendatefmts2.js
@@ -194,7 +194,7 @@ var hardCodeData = {
var aux = require("./datefmts.js");
function usage() {
- console.log("Usage: gendatefmts [-h] [ locale_data_dir ]\n" +
+ console.log("Usage: gendatefmts2 [-h] [ locale_data_dir ]\n" +
"Generate date formats information files.\n" +
"-h or --help\n" +
" this help\n" +
@@ -231,21 +231,25 @@ function anyProperties(data) {
return false;
}
-function writeSystemResources(language, script, region, data) {
- var path = calcLocalePath(language, script, region, "");
+function writeResources(language, script, region, filename, data) {
+ var locpath = calcLocalePath(language, script, region, "");
// if (data && data.generated) {
if (anyProperties(data)) {
- console.log("Writing " + path );
- makeDirs(path);
- fs.writeFileSync(path + "/sysres.json", stringify(data, {space: 4}), "utf-8");
+ console.log("Writing " + locpath);
+ makeDirs(locpath);
+ fs.writeFileSync(path.join(locpath, filename), stringify(data, {space: 4}), "utf-8");
} else {
- console.log("Skipping empty " + path );
+ console.log("Skipping empty " + locpath + "\n");
}
// } else {
// console.log("Skipping existing " + path );
// }
}
+function writeSystemResources(language, script, region, data) {
+ writeResources(language, script, region, "sysres.json", data);
+}
+
var localeDirName;
var tmpDirName = "./tmp";
process.argv.forEach(function (val, index, array) {
@@ -277,11 +281,14 @@ console.log("Reading existing locale data ...");
var dateFormats = {};
var systemResources = {};
+var displayNames = {};
console.log("dateformats.json: ");
aux.walkLocaleDir(dateFormats, /dateformats\.json$/, localeDirName, "");
console.log("sysres.json: ");
aux.walkLocaleDir(systemResources, /sysres\.json$/, localeDirName, "");
+console.log("dateres.json:");
+displayNames.data = aux.createRootDisplayNames();
console.log("\nMerging formats forward ...");
@@ -425,6 +432,59 @@ locales.forEach(function (file) {
} catch (e) {
console.log("Could not find the file " + filename + " ... skipping.");
}
+
+ // do regular gregorian for all locales
+ cal = require(path.join(sourceDir, "ca-gregorian.json"));
+ newFormats = aux.createDateFormats(language, script, region, cal.main[file].dates.calendars);
+ //console.log("data is " + JSON.stringify(newFormats, undefined, 4) + "\n");
+ group = aux.getFormatGroup(dateFormats, localeComponents);
+ group.data = merge(group.data || {}, newFormats);
+
+ newFormats = aux.createSystemResources(cal.main[file].dates.calendars, language);
+ //console.log("data is " + JSON.stringify(newFormats, undefined, 4) + "\n");
+ group = aux.getFormatGroup(systemResources, localeComponents);
+ group.data = merge(group.data || {}, newFormats);
+
+ // do other calendars for some locales
+ if (language === "he" || language === "ar") {
+ cal = require(path.join(sourceDir, "ca-hebrew.json"));
+
+ newFormats = aux.createSystemResources(cal.main[file].dates.calendars, language);
+ //console.log("data is " + JSON.stringify(newFormats, undefined, 4) + "\n");
+ group = aux.getFormatGroup(systemResources, localeComponents);
+ group.data = merge(group.data || {}, newFormats);
+ }
+
+ // date/time duration.
+ units = require(path.join(sourceDir, "units.json"));
+ newFormats = aux.createDurationResources(units.main[file].units, language, script);
+ //console.log("Duration data is " + JSON.stringify(newFormats, undefined, 4) + "\n");
+ group = aux.getFormatGroup(systemResources, localeComponents);
+ group.data = merge(group.data || {}, newFormats);
+
+ // relative time format
+ dateFields = require(path.join(sourceDir, "dateFields.json"));
+ newFormats = aux.createRelativeFormatResources(dateFields.main[file].dates.fields, language, script);
+ //console.log("Relative format data is " + JSON.stringify(newFormats, undefined, 4) + "\n");
+ group = aux.getFormatGroup(systemResources, localeComponents);
+ group.data = merge(group.data || {}, newFormats);
+
+ // Date/Time display names
+ newFormats = aux.createDisplayNames(dateFields.main[file].dates.fields, language, script, region);
+ group = aux.getFormatGroup(displayNames, localeComponents);
+ group.data = merge(group.data || {}, newFormats);
+
+ // separator
+ seperator = require(path.join(sourceDir, "listPatterns.json"));
+ newFormats = aux.createSeperatorResources(seperator.main[file].listPatterns, language);
+ //console.log("listPattern data is " + JSON.stringify(newFormats, undefined, 4) + "\n");
+ group = aux.getFormatGroup(systemResources, localeComponents);
+ group.data = merge(group.data || {}, newFormats);
+
+ if (hardCodeData.hasOwnProperty(language)) {
+ group.data = merge(group.data || {}, hardCodeData[language]);
+ }
+
});
console.log("\nMerging formats forward ...");
@@ -503,6 +563,31 @@ for (language in systemResources) {
}
writeSystemResources(undefined, undefined, undefined, systemResources.data);
//aux.writeFormats(localeDirName, "sysres.json", systemResources, []);
+console.log("\n");
+
+mergeAndPrune(displayNames);
+for (language in displayNames) {
+ if (language && displayNames[language] && language !== 'data' && language !== 'merged') {
+ for (var subpart in displayNames[language]) {
+ if (subpart && displayNames[language][subpart] && subpart !== 'data' && subpart !== 'merged') {
+ if (Locale.isScriptCode(subpart)) {
+ script = subpart;
+ for (region in displayNames[language][script]) {
+ if (region && displayNames[language][script][region] && region !== 'data' && region !== 'merged') {
+ writeResources(language, script, region, "dateres.json", displayNames[language][script][region].data);
+ }
+ }
+ writeResources(language, script, undefined, "dateres.json", displayNames[language][script].data);
+ } else {
+ writeResources(language, undefined, subpart, "dateres.json", displayNames[language][subpart].data);
+ }
+ }
+ }
+ writeResources(language, undefined, undefined, "dateres.json", displayNames[language].data);
+ }
+}
+writeResources(undefined, undefined, undefined, "dateres.json", displayNames.data);
+
console.log("");
console.log("Done.");