1 |
|
2 |
|
3 |
|
4 |
|
5 | import moment from '../moment';
|
6 |
|
7 | function relativeTimeWithMutation(number, withoutSuffix, key) {
|
8 | var format = {
|
9 | mm: 'munutenn',
|
10 | MM: 'miz',
|
11 | dd: 'devezh',
|
12 | };
|
13 | return number + ' ' + mutation(format[key], number);
|
14 | }
|
15 | function specialMutationForYears(number) {
|
16 | switch (lastNumber(number)) {
|
17 | case 1:
|
18 | case 3:
|
19 | case 4:
|
20 | case 5:
|
21 | case 9:
|
22 | return number + ' bloaz';
|
23 | default:
|
24 | return number + ' vloaz';
|
25 | }
|
26 | }
|
27 | function lastNumber(number) {
|
28 | if (number > 9) {
|
29 | return lastNumber(number % 10);
|
30 | }
|
31 | return number;
|
32 | }
|
33 | function mutation(text, number) {
|
34 | if (number === 2) {
|
35 | return softMutation(text);
|
36 | }
|
37 | return text;
|
38 | }
|
39 | function softMutation(text) {
|
40 | var mutationTable = {
|
41 | m: 'v',
|
42 | b: 'v',
|
43 | d: 'z',
|
44 | };
|
45 | if (mutationTable[text.charAt(0)] === undefined) {
|
46 | return text;
|
47 | }
|
48 | return mutationTable[text.charAt(0)] + text.substring(1);
|
49 | }
|
50 |
|
51 | var monthsParse = [
|
52 | /^gen/i,
|
53 | /^c[ʼ\']hwe/i,
|
54 | /^meu/i,
|
55 | /^ebr/i,
|
56 | /^mae/i,
|
57 | /^(mez|eve)/i,
|
58 | /^gou/i,
|
59 | /^eos/i,
|
60 | /^gwe/i,
|
61 | /^her/i,
|
62 | /^du/i,
|
63 | /^ker/i,
|
64 | ],
|
65 | monthsRegex =
|
66 | /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
|
67 | monthsStrictRegex =
|
68 | /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
|
69 | monthsShortStrictRegex =
|
70 | /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
|
71 | fullWeekdaysParse = [
|
72 | /^sul/i,
|
73 | /^lun/i,
|
74 | /^meurzh/i,
|
75 | /^merc[ʼ\']her/i,
|
76 | /^yaou/i,
|
77 | /^gwener/i,
|
78 | /^sadorn/i,
|
79 | ],
|
80 | shortWeekdaysParse = [
|
81 | /^Sul/i,
|
82 | /^Lun/i,
|
83 | /^Meu/i,
|
84 | /^Mer/i,
|
85 | /^Yao/i,
|
86 | /^Gwe/i,
|
87 | /^Sad/i,
|
88 | ],
|
89 | minWeekdaysParse = [
|
90 | /^Su/i,
|
91 | /^Lu/i,
|
92 | /^Me([^r]|$)/i,
|
93 | /^Mer/i,
|
94 | /^Ya/i,
|
95 | /^Gw/i,
|
96 | /^Sa/i,
|
97 | ];
|
98 |
|
99 | export default moment.defineLocale('br', {
|
100 | months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
|
101 | '_'
|
102 | ),
|
103 | monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
|
104 | weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
|
105 | weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
|
106 | weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
|
107 | weekdaysParse: minWeekdaysParse,
|
108 | fullWeekdaysParse: fullWeekdaysParse,
|
109 | shortWeekdaysParse: shortWeekdaysParse,
|
110 | minWeekdaysParse: minWeekdaysParse,
|
111 |
|
112 | monthsRegex: monthsRegex,
|
113 | monthsShortRegex: monthsRegex,
|
114 | monthsStrictRegex: monthsStrictRegex,
|
115 | monthsShortStrictRegex: monthsShortStrictRegex,
|
116 | monthsParse: monthsParse,
|
117 | longMonthsParse: monthsParse,
|
118 | shortMonthsParse: monthsParse,
|
119 |
|
120 | longDateFormat: {
|
121 | LT: 'HH:mm',
|
122 | LTS: 'HH:mm:ss',
|
123 | L: 'DD/MM/YYYY',
|
124 | LL: 'D [a viz] MMMM YYYY',
|
125 | LLL: 'D [a viz] MMMM YYYY HH:mm',
|
126 | LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
|
127 | },
|
128 | calendar: {
|
129 | sameDay: '[Hiziv da] LT',
|
130 | nextDay: '[Warcʼhoazh da] LT',
|
131 | nextWeek: 'dddd [da] LT',
|
132 | lastDay: '[Decʼh da] LT',
|
133 | lastWeek: 'dddd [paset da] LT',
|
134 | sameElse: 'L',
|
135 | },
|
136 | relativeTime: {
|
137 | future: 'a-benn %s',
|
138 | past: '%s ʼzo',
|
139 | s: 'un nebeud segondennoù',
|
140 | ss: '%d eilenn',
|
141 | m: 'ur vunutenn',
|
142 | mm: relativeTimeWithMutation,
|
143 | h: 'un eur',
|
144 | hh: '%d eur',
|
145 | d: 'un devezh',
|
146 | dd: relativeTimeWithMutation,
|
147 | M: 'ur miz',
|
148 | MM: relativeTimeWithMutation,
|
149 | y: 'ur bloaz',
|
150 | yy: specialMutationForYears,
|
151 | },
|
152 | dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
|
153 | ordinal: function (number) {
|
154 | var output = number === 1 ? 'añ' : 'vet';
|
155 | return number + output;
|
156 | },
|
157 | week: {
|
158 | dow: 1,
|
159 | doy: 4,
|
160 | },
|
161 | meridiemParse: /a.m.|g.m./,
|
162 | isPM: function (token) {
|
163 | return token === 'g.m.';
|
164 | },
|
165 | meridiem: function (hour, minute, isLower) {
|
166 | return hour < 12 ? 'a.m.' : 'g.m.';
|
167 | },
|
168 | });
|