@brightspace-ui/intl 3.13.2 → 3.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common.js +15 -1
- package/lib/dateTime.js +264 -250
- package/lib/number.js +1 -0
- package/package.json +3 -3
package/lib/common.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const defaultLocale = 'en';
|
|
2
|
-
export const supportedBaseLocales = ['ar', 'cy', 'da', 'de', 'en', 'es', 'fr', 'hi', 'ja', 'ko', 'nl', 'pt', 'sv', 'tr', 'zh'];
|
|
2
|
+
export const supportedBaseLocales = ['ar', 'cy', 'da', 'de', 'en', 'es', 'fr', 'hi', 'ja', 'ko', 'mi', 'nl', 'pt', 'sv', 'tr', 'zh'];
|
|
3
|
+
export const supportedLangpacks = ['ar', 'cy', 'da', 'de', 'en', 'en-gb', 'es', 'es-es', 'fr', 'fr-fr', 'fr-on', 'hi', 'ja', 'ko', 'mi', 'nl', 'pt', 'sv', 'tr', 'zh-cn', 'zh-tw'];
|
|
3
4
|
export const supportedLocalesDetails = [
|
|
4
5
|
{ code: 'ar-sa', name: 'العربية' },
|
|
5
6
|
{ code: 'cy-gb', name: 'Cymraeg (Y Deyrnas Unedig)' },
|
|
@@ -16,6 +17,7 @@ export const supportedLocalesDetails = [
|
|
|
16
17
|
{ code: 'hi-in', name: 'हिन्दी Hindi (India)' },
|
|
17
18
|
{ code: 'ja-jp', name: '日本語 (日本)' },
|
|
18
19
|
{ code: 'ko-kr', name: '한국어 (대한민국)' },
|
|
20
|
+
{ code: 'mi-nz', name: 'Māori (Aotearoa)' },
|
|
19
21
|
{ code: 'nl-nl', name: 'Nederlands (Nederland)' },
|
|
20
22
|
{ code: 'pt-br', name: 'Português (Brasil)' },
|
|
21
23
|
{ code: 'sv-se', name: 'Svenska (Sverige)' },
|
|
@@ -88,6 +90,7 @@ export function validateFormatValue(value) {
|
|
|
88
90
|
class DocumentLocaleSettings {
|
|
89
91
|
|
|
90
92
|
constructor() {
|
|
93
|
+
this._cache = new Map();
|
|
91
94
|
this._htmlElem = window.document.getElementsByTagName('html')[0];
|
|
92
95
|
this._listeners = [];
|
|
93
96
|
this._overrides = {};
|
|
@@ -101,6 +104,7 @@ class DocumentLocaleSettings {
|
|
|
101
104
|
set fallbackLanguage(val) {
|
|
102
105
|
const normalized = this._normalize(val);
|
|
103
106
|
if (normalized === this._fallbackLanguage) return;
|
|
107
|
+
this._cache.clear();
|
|
104
108
|
this._fallbackLanguage = normalized;
|
|
105
109
|
this._listeners.forEach((cb) => cb());
|
|
106
110
|
}
|
|
@@ -109,6 +113,7 @@ class DocumentLocaleSettings {
|
|
|
109
113
|
set language(val) {
|
|
110
114
|
const normalized = this._normalize(val);
|
|
111
115
|
if (normalized === this._language) return;
|
|
116
|
+
this._cache.clear();
|
|
112
117
|
this._language = normalized;
|
|
113
118
|
this._listeners.forEach((cb) => cb());
|
|
114
119
|
}
|
|
@@ -123,6 +128,7 @@ class DocumentLocaleSettings {
|
|
|
123
128
|
delete val.date.formats.timeFormats;
|
|
124
129
|
}
|
|
125
130
|
}
|
|
131
|
+
this._cache.clear();
|
|
126
132
|
this._overrides = val;
|
|
127
133
|
this._listeners.forEach((cb) => cb());
|
|
128
134
|
}
|
|
@@ -131,6 +137,13 @@ class DocumentLocaleSettings {
|
|
|
131
137
|
this._listeners.push(cb);
|
|
132
138
|
}
|
|
133
139
|
|
|
140
|
+
getCacheItem(key, provider) {
|
|
141
|
+
if (!this._cache.has(key)) {
|
|
142
|
+
this._cache.set(key, provider());
|
|
143
|
+
}
|
|
144
|
+
return this._cache.get(key);
|
|
145
|
+
}
|
|
146
|
+
|
|
134
147
|
removeChangeListener(cb) {
|
|
135
148
|
const index = this._listeners.indexOf(cb);
|
|
136
149
|
if (index < 0) return;
|
|
@@ -138,6 +151,7 @@ class DocumentLocaleSettings {
|
|
|
138
151
|
}
|
|
139
152
|
|
|
140
153
|
reset() {
|
|
154
|
+
this._cache.clear();
|
|
141
155
|
this._language = this._languageInitial;
|
|
142
156
|
this._fallbackLanguage = null;
|
|
143
157
|
this.overrides = {};
|
package/lib/dateTime.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { getDocumentLocaleSettings, getLanguage, merge } from './common.js';
|
|
2
2
|
|
|
3
|
+
// to-do: These should be based on region, not language
|
|
3
4
|
const hour24locales = ['cy', 'da', 'de', 'es', 'fr', 'nl', 'pt', 'sv', 'tr', 'zh'];
|
|
4
|
-
const mondayFirstDayLocales = ['cy', 'da', 'de', 'fr', 'hi', 'nl', 'sv', 'tr'];
|
|
5
|
+
const mondayFirstDayLocales = ['cy', 'da', 'de', 'fr', 'hi', 'mi', 'nl', 'sv', 'tr'];
|
|
5
6
|
|
|
6
7
|
// timezone abbreviations and offsets from https://www.timeanddate.com/time/zones/
|
|
7
8
|
const timezoneOffsetMap = {
|
|
@@ -691,266 +692,279 @@ export function convertUTCToLocalDateTime(date) {
|
|
|
691
692
|
}
|
|
692
693
|
|
|
693
694
|
export function getDateTimeDescriptor() {
|
|
694
|
-
|
|
695
|
-
const language = getLanguage();
|
|
696
695
|
const settings = getDocumentLocaleSettings();
|
|
696
|
+
return settings.getCacheItem('dateTimeDescriptor', () => {
|
|
697
697
|
|
|
698
|
-
|
|
699
|
-
|
|
698
|
+
const language = getLanguage();
|
|
699
|
+
const subtags = language.split('-');
|
|
700
|
+
const baseLanguage = subtags[0];
|
|
700
701
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
702
|
+
let hour24 = (hour24locales.indexOf(baseLanguage) > -1);
|
|
703
|
+
if (language === 'zh-tw') {
|
|
704
|
+
hour24 = false;
|
|
705
|
+
}
|
|
706
|
+
if (settings.overrides.date && settings.overrides.date.hour24 !== undefined) {
|
|
707
|
+
hour24 = settings.overrides.date.hour24;
|
|
708
|
+
}
|
|
708
709
|
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
710
|
+
const timeFormat = getTimeFormat(hour24, language, baseLanguage);
|
|
711
|
+
|
|
712
|
+
let dateFormats = ['dddd, MMMM d, yyyy', 'MMM d, yyyy', 'M/d/yyyy', 'MMMM yyyy', 'MMMM d', 'MMM d'];
|
|
713
|
+
const fullTimeFormat = (baseLanguage === 'zh' && language !== 'zh-tw') ? `ZZZ ${timeFormat}` : `${timeFormat} ZZZ`;
|
|
714
|
+
let dayPeriods = ['AM', 'PM'];
|
|
715
|
+
let months = [
|
|
716
|
+
['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
|
|
717
|
+
['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
|
718
|
+
];
|
|
719
|
+
let days = [
|
|
720
|
+
['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
|
721
|
+
['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
|
722
|
+
['S', 'M', 'T', 'W', 'T', 'F', 'S']
|
|
723
|
+
];
|
|
724
|
+
let firstDayOfWeek = (mondayFirstDayLocales.indexOf(baseLanguage) > -1) ? 1 : 0;
|
|
725
|
+
let weekendStartDay = 6;
|
|
726
|
+
let weekendEndDay = 0;
|
|
727
|
+
|
|
728
|
+
switch (baseLanguage) {
|
|
729
|
+
case 'ar':
|
|
730
|
+
dateFormats = ['dddd, d MMMM, yyyy', 'dd MMMM, yyyy', 'dd/MM/yyyy', 'MMMM, yyyy', 'd MMMM', 'd MMM'];
|
|
731
|
+
dayPeriods = ['ص', 'م'];
|
|
732
|
+
months[0] = months[1] = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];
|
|
733
|
+
days = [
|
|
734
|
+
['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
|
735
|
+
['أحد', 'إثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
|
|
736
|
+
['أ', 'إ', 'ث', 'أر', 'خ', 'ج', 'س']
|
|
737
|
+
];
|
|
738
|
+
firstDayOfWeek = 6;
|
|
739
|
+
weekendStartDay = 4;
|
|
740
|
+
weekendEndDay = 5;
|
|
741
|
+
break;
|
|
742
|
+
case 'cy':
|
|
743
|
+
dateFormats = ['dddd, d MMMM yyyy', 'dd MMMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
|
|
744
|
+
months = [
|
|
745
|
+
['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'],
|
|
746
|
+
['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Awst', 'Medi', 'Hyd', 'Tach', 'Rhag']
|
|
747
|
+
];
|
|
748
|
+
days = [
|
|
749
|
+
['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
|
|
750
|
+
['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
|
|
751
|
+
['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa']
|
|
752
|
+
];
|
|
753
|
+
break;
|
|
754
|
+
case 'da':
|
|
755
|
+
dateFormats = ['dddd \'den\' d. MMMM yyyy', 'd. MMM. yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'd. MMMM', 'd. MMM'];
|
|
756
|
+
months = [
|
|
757
|
+
['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'],
|
|
758
|
+
['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
|
|
759
|
+
];
|
|
760
|
+
days = [
|
|
761
|
+
['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
|
|
762
|
+
['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],
|
|
763
|
+
['S', 'M', 'T', 'O', 'T', 'F', 'L']
|
|
764
|
+
];
|
|
765
|
+
break;
|
|
766
|
+
case 'de':
|
|
767
|
+
dateFormats = ['dddd d. MMMM yyyy', 'd. MMMM yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'd. MMMM', 'd. MMM'];
|
|
768
|
+
months = [
|
|
769
|
+
['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
|
|
770
|
+
['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.']
|
|
771
|
+
];
|
|
772
|
+
days = [
|
|
773
|
+
['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
|
|
774
|
+
['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
|
|
775
|
+
['S', 'M', 'D', 'M', 'D', 'F', 'S']
|
|
776
|
+
];
|
|
777
|
+
break;
|
|
778
|
+
case 'es':
|
|
779
|
+
dateFormats = ['dddd d\' de \'MMMM\' de \'yyyy', 'd\' de \'MMMM\' de \'yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd\' de \'MMMM', 'd\' de \'MMM'];
|
|
780
|
+
dayPeriods = ['a. m.', 'p. m.'];
|
|
781
|
+
months = [
|
|
782
|
+
['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
|
|
783
|
+
['ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.']
|
|
784
|
+
];
|
|
785
|
+
days = [
|
|
786
|
+
['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
|
|
787
|
+
['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'],
|
|
788
|
+
['D', 'L', 'M', 'M', 'J', 'V', 'S']
|
|
789
|
+
];
|
|
790
|
+
break;
|
|
791
|
+
case 'fr':
|
|
792
|
+
dateFormats = ['dddd d MMMM yyyy', 'd MMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
|
|
793
|
+
months = [
|
|
794
|
+
['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
|
|
795
|
+
['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.']
|
|
796
|
+
];
|
|
797
|
+
days = [
|
|
798
|
+
['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
|
|
799
|
+
['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
|
|
800
|
+
['D', 'L', 'M', 'M', 'J', 'V', 'S']
|
|
801
|
+
];
|
|
802
|
+
break;
|
|
803
|
+
case 'hi':
|
|
804
|
+
dateFormats = ['dddd, d MMMM yyyy', 'd MMMM yyyy', 'dd-MM-yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
|
|
805
|
+
dayPeriods = ['पूर्वाह्न', 'अपराह्न'];
|
|
806
|
+
months = [
|
|
807
|
+
['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
|
|
808
|
+
['जन', 'फर', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अग', 'सितं', 'अक्टू', 'नवं', 'दिसं']
|
|
809
|
+
];
|
|
810
|
+
days = [
|
|
811
|
+
['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'],
|
|
812
|
+
['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
|
|
813
|
+
['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श']
|
|
814
|
+
];
|
|
815
|
+
break;
|
|
816
|
+
case 'ja':
|
|
817
|
+
dateFormats = ['yyyy年M月d日', 'yyyy年M月d日', 'yyyy/MM/dd', 'yyyy年M月', 'M月d日', 'M月d日'];
|
|
818
|
+
dayPeriods = ['午前', '午後'];
|
|
819
|
+
months[0] = months[1] = ['1 月', '2 月', '3 月', '4 月', '5 月', '6 月', '7 月', '8 月', '9 月', '10 月', '11 月', '12 月'];
|
|
820
|
+
days[0] = days[1] = days[2] = ['日', '月', '火', '水', '木', '金', '土'];
|
|
821
|
+
break;
|
|
822
|
+
case 'ko':
|
|
823
|
+
dateFormats = ['yyyy년 M월 d일 dddd', 'yyyy년 M월 d일', 'yyyy-MM-dd', 'yyyy년 M월', 'M월 d일', 'MMM d일'];
|
|
824
|
+
dayPeriods = ['오전', '오후'];
|
|
825
|
+
months[0] = months[1] = ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'];
|
|
826
|
+
days[0] = ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'];
|
|
827
|
+
days[1] = days[2] = ['일', '월', '화', '수', '목', '금', '토'];
|
|
828
|
+
break;
|
|
829
|
+
case 'mi':
|
|
830
|
+
dateFormats = ['dddd, d MMMM y', 'd MMMM y', 'dd-MM-y', 'MMMM yyyy', 'd MMMM', 'd MMM'];
|
|
831
|
+
months = [
|
|
832
|
+
['Kohitātea', 'Huitanguru', 'Poutūterangi', 'Paengawhāwhā', 'Haratua', 'Pipiri', 'Hōngongoi', 'Hereturikōkā', 'Mahuru', 'Whiringa-ā-nuku', 'Whiringa-ā-rangi', 'Hakihea'],
|
|
833
|
+
['Kohi', 'Hui', 'Pou', 'Pae', 'Hara', 'Pipi', 'Hōngo', 'Here', 'Mahu', 'Nuku', 'Rangi', 'Haki']
|
|
834
|
+
];
|
|
835
|
+
days = [
|
|
836
|
+
['Rātapu', 'Rāhina', 'Rātū', 'Rāapa', 'Rāpare', 'Rāmere', 'Rāhoroi'],
|
|
837
|
+
['Tap', 'Hin', 'Tū', 'Apa', 'Par', 'Mer', 'Hor'],
|
|
838
|
+
['T', 'H', 'T', 'A', 'P', 'M', 'H']
|
|
839
|
+
];
|
|
840
|
+
break;
|
|
841
|
+
case 'nl':
|
|
842
|
+
dateFormats = ['dddd d MMMM yyyy', 'd MMMM yyyy', 'dd-MM-yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
|
|
843
|
+
dayPeriods = ['a.m.', 'p.m.'];
|
|
844
|
+
months = [
|
|
845
|
+
['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
|
|
846
|
+
['jan.', 'feb.', 'mrt.', 'apr.', 'mei', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
|
|
847
|
+
];
|
|
848
|
+
days = [
|
|
849
|
+
['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
|
|
850
|
+
['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
|
|
851
|
+
['Z', 'M', 'D', 'W', 'D', 'V', 'Z']
|
|
852
|
+
];
|
|
853
|
+
break;
|
|
854
|
+
case 'pt':
|
|
855
|
+
dateFormats = ['dddd, d\' de \'MMMM\' de \'yyyy', 'd\' de \'MMMM\' de \'yyyy', 'dd/MM/yyyy', 'MMMM\' de \'yyyy', 'dd\' de \'MMMM', 'dd\' de \'MMM'];
|
|
856
|
+
months = [
|
|
857
|
+
['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
|
|
858
|
+
['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez']
|
|
859
|
+
];
|
|
860
|
+
days = [
|
|
861
|
+
['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'],
|
|
862
|
+
['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
|
|
863
|
+
['D', 'S', 'T', 'Q', 'Q', 'S', 'S']
|
|
864
|
+
];
|
|
865
|
+
break;
|
|
866
|
+
case 'sv':
|
|
867
|
+
dateFormats = ['dddd \'den\' d MMMM yyyy', 'd MMMM yyyy', 'yyyy-MM-dd', 'MMMM yyyy', 'dd MMMM', 'dd MMM'];
|
|
868
|
+
dayPeriods = ['fm', 'em'];
|
|
869
|
+
months = [
|
|
870
|
+
['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'],
|
|
871
|
+
['jan.', 'feb.', 'mars', 'apr.', 'maj', 'juni', 'juli', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.']
|
|
872
|
+
];
|
|
873
|
+
days = [
|
|
874
|
+
['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag'],
|
|
875
|
+
['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör'],
|
|
876
|
+
['S', 'M', 'T', 'O', 'T', 'F', 'L']
|
|
877
|
+
];
|
|
878
|
+
break;
|
|
879
|
+
case 'tr':
|
|
880
|
+
dateFormats = ['dd MMMM yyyy dddd', 'dd MMMM yyyy', 'dd.MM.yyyy', 'MMMM yyyy', 'dd MMMM', 'dd MMM'];
|
|
881
|
+
dayPeriods = ['ÖÖ', 'ÖS'];
|
|
882
|
+
months = [
|
|
883
|
+
['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],
|
|
884
|
+
['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Ek', 'Kas', 'Ara']
|
|
885
|
+
];
|
|
886
|
+
days = [
|
|
887
|
+
['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
|
|
888
|
+
['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],
|
|
889
|
+
['P', 'P', 'S', 'Ç', 'P', 'C', 'C']
|
|
890
|
+
];
|
|
891
|
+
break;
|
|
892
|
+
case 'zh':
|
|
893
|
+
dateFormats = ['yyyy年M月d日', 'yyyy年M月d日', 'yyyy/M/d', 'yyyy年M月', 'M月d日', 'M月d日'];
|
|
894
|
+
dayPeriods = ['上午', '下午'];
|
|
895
|
+
months[0] = months[1] = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
|
|
896
|
+
days[0] = days[1] = ['週日', '週一', '週二', '週三', '週四', '週五', '週六'];
|
|
897
|
+
days[2] = ['日', '一', '二', '三', '四', '五', '六'];
|
|
898
|
+
break;
|
|
899
|
+
}
|
|
887
900
|
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
901
|
+
switch (language) {
|
|
902
|
+
case 'en-gb':
|
|
903
|
+
dateFormats = ['dddd, d MMMM yyyy', 'dd MMMM yyyy', 'dd/MM/yyyy', 'MMMM yyyy', 'd MMMM', 'd MMM'];
|
|
904
|
+
break;
|
|
905
|
+
case 'fr-ca':
|
|
906
|
+
dateFormats[1] = 'MMM d yyyy';
|
|
907
|
+
dateFormats[2] = 'yyyy-MM-dd';
|
|
908
|
+
dateFormats[4] = 'MMMM d';
|
|
909
|
+
dateFormats[5] = 'MMM d';
|
|
910
|
+
firstDayOfWeek = 0;
|
|
911
|
+
break;
|
|
912
|
+
case 'fr-on':
|
|
913
|
+
dateFormats[0] = 'dddd\' le \'d MMMM yyyy';
|
|
914
|
+
dateFormats[1] = 'MMM d yyyy';
|
|
915
|
+
dateFormats[2] = 'yyyy-MM-dd';
|
|
916
|
+
firstDayOfWeek = 0;
|
|
917
|
+
break;
|
|
918
|
+
case 'zh-tw':
|
|
919
|
+
days[0] = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
|
|
920
|
+
break;
|
|
921
|
+
}
|
|
909
922
|
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
923
|
+
const descriptor = {
|
|
924
|
+
hour24: hour24,
|
|
925
|
+
formats: {
|
|
926
|
+
dateFormats: {
|
|
927
|
+
'full': dateFormats[0],
|
|
928
|
+
'medium': dateFormats[1],
|
|
929
|
+
'short': dateFormats[2],
|
|
930
|
+
'monthYear': dateFormats[3],
|
|
931
|
+
'monthDay': dateFormats[4],
|
|
932
|
+
'shortMonthDay': dateFormats[5],
|
|
933
|
+
'longDayOfWeek': 'dddd',
|
|
934
|
+
'shortDayOfWeek': 'ddd',
|
|
935
|
+
'longMonth': 'MMMM',
|
|
936
|
+
'shortMonth': 'MMM'
|
|
937
|
+
},
|
|
938
|
+
timeFormats: {
|
|
939
|
+
'full': fullTimeFormat,
|
|
940
|
+
'medium': timeFormat,
|
|
941
|
+
'short': timeFormat
|
|
942
|
+
}
|
|
924
943
|
},
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
944
|
+
calendar: {
|
|
945
|
+
firstDayOfWeek: firstDayOfWeek,
|
|
946
|
+
weekendStartDay: weekendStartDay,
|
|
947
|
+
weekendEndDay: weekendEndDay,
|
|
948
|
+
months: {
|
|
949
|
+
short: months[1],
|
|
950
|
+
long: months[0]
|
|
951
|
+
},
|
|
952
|
+
days: {
|
|
953
|
+
narrow: days[2],
|
|
954
|
+
short: days[1],
|
|
955
|
+
long: days[0]
|
|
956
|
+
},
|
|
957
|
+
dayPeriods: { am: dayPeriods[0], pm: dayPeriods[1] }
|
|
929
958
|
}
|
|
930
|
-
}
|
|
931
|
-
calendar: {
|
|
932
|
-
firstDayOfWeek: firstDayOfWeek,
|
|
933
|
-
weekendStartDay: weekendStartDay,
|
|
934
|
-
weekendEndDay: weekendEndDay,
|
|
935
|
-
months: {
|
|
936
|
-
short: months[1],
|
|
937
|
-
long: months[0]
|
|
938
|
-
},
|
|
939
|
-
days: {
|
|
940
|
-
narrow: days[2],
|
|
941
|
-
short: days[1],
|
|
942
|
-
long: days[0]
|
|
943
|
-
},
|
|
944
|
-
dayPeriods: { am: dayPeriods[0], pm: dayPeriods[1] }
|
|
945
|
-
}
|
|
946
|
-
};
|
|
959
|
+
};
|
|
947
960
|
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
961
|
+
if (settings.overrides.date) {
|
|
962
|
+
merge(descriptor, settings.overrides.date);
|
|
963
|
+
}
|
|
951
964
|
|
|
952
|
-
|
|
965
|
+
return descriptor;
|
|
953
966
|
|
|
967
|
+
});
|
|
954
968
|
}
|
|
955
969
|
|
|
956
970
|
export function formatTime(date, options) {
|
package/lib/number.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightspace-ui/intl",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.15.0",
|
|
4
4
|
"description": "Internationalization APIs for number, date, time and file size formatting and parsing in D2L Brightspace.",
|
|
5
5
|
"main": "lib/number.js",
|
|
6
6
|
"scripts": {
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@babel/core": "^7",
|
|
40
40
|
"@babel/eslint-parser": "^7",
|
|
41
|
-
"@web/dev-server": "^0.
|
|
41
|
+
"@web/dev-server": "^0.3",
|
|
42
42
|
"chai": "^4",
|
|
43
43
|
"concurrently": "^8",
|
|
44
44
|
"eslint": "^8",
|
|
45
|
-
"eslint-config-brightspace": "^0.
|
|
45
|
+
"eslint-config-brightspace": "^0.25",
|
|
46
46
|
"http-server": "^14.0",
|
|
47
47
|
"mocha": "^10",
|
|
48
48
|
"mocha-headless-chrome": "^4"
|