|
1 | 1 | // Belarusian [be] |
2 | 2 | import dayjs from 'dayjs' |
3 | 3 |
|
| 4 | +const monthFormat = 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') |
| 5 | +const monthStandalone = 'студзень_лютый_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') |
| 6 | + |
| 7 | +const monthShortFormat = 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж.'.split('_') |
| 8 | +const monthShortStandalone = 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_') |
| 9 | + |
| 10 | +const MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/ |
| 11 | + |
| 12 | +function plural(word, num) { |
| 13 | + const forms = word.split('_') |
| 14 | + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]) // eslint-disable-line |
| 15 | +} |
| 16 | +function relativeTimeWithPlural(number, withoutSuffix, key) { |
| 17 | + const format = { |
| 18 | + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', |
| 19 | + mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', |
| 20 | + hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', |
| 21 | + dd: 'дзень_дня_дзён', |
| 22 | + MM: 'месяц_месяца_месяцаў', |
| 23 | + yy: 'год_гады_гадоў' |
| 24 | + } |
| 25 | + if (key === 'm') { |
| 26 | + return withoutSuffix ? 'хвіліна' : 'хвіліну' |
| 27 | + } else if (key === 'h') { |
| 28 | + return withoutSuffix ? 'гадзіна' : 'гадзіну' |
| 29 | + } |
| 30 | + |
| 31 | + return `${number} ${plural(format[key], +number)}` |
| 32 | +} |
| 33 | + |
| 34 | +const months = (dayjsInstance, format) => { |
| 35 | + if (MONTHS_IN_FORMAT.test(format)) { |
| 36 | + return monthFormat[dayjsInstance.month()] |
| 37 | + } |
| 38 | + return monthStandalone[dayjsInstance.month()] |
| 39 | +} |
| 40 | +months.s = monthStandalone |
| 41 | +months.f = monthFormat |
| 42 | + |
| 43 | +const monthsShort = (dayjsInstance, format) => { |
| 44 | + if (MONTHS_IN_FORMAT.test(format)) { |
| 45 | + return monthShortFormat[dayjsInstance.month()] |
| 46 | + } |
| 47 | + return monthShortStandalone[dayjsInstance.month()] |
| 48 | +} |
| 49 | +monthsShort.s = monthShortStandalone |
| 50 | +monthsShort.f = monthShortFormat |
| 51 | + |
4 | 52 | const locale = { |
5 | 53 | name: 'be', |
6 | | - weekdays: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), |
7 | | - months: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), |
| 54 | + weekdays: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), |
| 55 | + weekdaysShort: 'няд_пнд_аўт_сер_чцв_пят_суб'.split('_'), |
| 56 | + weekdaysMin: 'нд_пн_аў_ср_чц_пт_сб'.split('_'), |
| 57 | + months, |
| 58 | + monthsShort, |
8 | 59 | weekStart: 1, |
9 | | - weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), |
10 | | - monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), |
11 | | - weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), |
12 | | - ordinal: n => n, |
| 60 | + yearStart: 4, |
13 | 61 | formats: { |
14 | 62 | LT: 'HH:mm', |
15 | 63 | LTS: 'HH:mm:ss', |
16 | 64 | L: 'DD.MM.YYYY', |
17 | 65 | LL: 'D MMMM YYYY г.', |
18 | 66 | LLL: 'D MMMM YYYY г., HH:mm', |
19 | 67 | LLLL: 'dddd, D MMMM YYYY г., HH:mm' |
| 68 | + }, |
| 69 | + relativeTime: { |
| 70 | + future: 'праз %s', |
| 71 | + past: '%s таму', |
| 72 | + s: 'некалькі секунд', |
| 73 | + m: relativeTimeWithPlural, |
| 74 | + mm: relativeTimeWithPlural, |
| 75 | + h: relativeTimeWithPlural, |
| 76 | + hh: relativeTimeWithPlural, |
| 77 | + d: 'дзень', |
| 78 | + dd: relativeTimeWithPlural, |
| 79 | + M: 'месяц', |
| 80 | + MM: relativeTimeWithPlural, |
| 81 | + y: 'год', |
| 82 | + yy: relativeTimeWithPlural |
| 83 | + }, |
| 84 | + ordinal: n => n, |
| 85 | + meridiem: (hour) => { |
| 86 | + if (hour < 4) { |
| 87 | + return 'ночы' |
| 88 | + } else if (hour < 12) { |
| 89 | + return 'раніцы' |
| 90 | + } else if (hour < 17) { |
| 91 | + return 'дня' |
| 92 | + } |
| 93 | + return 'вечара' |
20 | 94 | } |
21 | 95 | } |
22 | 96 |
|
23 | 97 | dayjs.locale(locale, null, true) |
24 | 98 |
|
25 | 99 | export default locale |
26 | | - |
|
0 commit comments