UNPKG

@freshworks/crayons

Version:
608 lines (575 loc) 19 kB
import { b as buildFormatLongFn, a as buildLocalizeFn, c as buildMatchPatternFn, d as buildMatchFn } from './index-dc611d24.js'; import { i as isSameUTCWeek } from './index-d2a6c100.js'; function declension(scheme, count) { // scheme for count=1 exists if (scheme.one !== undefined && count === 1) { return scheme.one; } var rem10 = count % 10; var rem100 = count % 100; // 1, 21, 31, ... if (rem10 === 1 && rem100 !== 11) { return scheme.singularNominative.replace('{{count}}', count); // 2, 3, 4, 22, 23, 24, 32 ... } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) { return scheme.singularGenitive.replace('{{count}}', count); // 5, 6, 7, 8, 9, 10, 11, ... } else { return scheme.pluralGenitive.replace('{{count}}', count); } } function buildLocalizeTokenFn(scheme) { return function (count, options) { if (options.addSuffix) { if (options.comparison > 0) { if (scheme.future) { return declension(scheme.future, count); } else { return 'через ' + declension(scheme.regular, count); } } else { if (scheme.past) { return declension(scheme.past, count); } else { return declension(scheme.regular, count) + ' назад'; } } } else { return declension(scheme.regular, count); } }; } var formatDistanceLocale = { lessThanXSeconds: buildLocalizeTokenFn({ regular: { one: 'меньше секунды', singularNominative: 'меньше {{count}} секунды', singularGenitive: 'меньше {{count}} секунд', pluralGenitive: 'меньше {{count}} секунд' }, future: { one: 'меньше, чем через секунду', singularNominative: 'меньше, чем через {{count}} секунду', singularGenitive: 'меньше, чем через {{count}} секунды', pluralGenitive: 'меньше, чем через {{count}} секунд' } }), xSeconds: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} секунда', singularGenitive: '{{count}} секунды', pluralGenitive: '{{count}} секунд' }, past: { singularNominative: '{{count}} секунду назад', singularGenitive: '{{count}} секунды назад', pluralGenitive: '{{count}} секунд назад' }, future: { singularNominative: 'через {{count}} секунду', singularGenitive: 'через {{count}} секунды', pluralGenitive: 'через {{count}} секунд' } }), halfAMinute: function halfAMinute(_, options) { if (options.addSuffix) { if (options.comparison > 0) { return 'через полминуты'; } else { return 'полминуты назад'; } } return 'полминуты'; }, lessThanXMinutes: buildLocalizeTokenFn({ regular: { one: 'меньше минуты', singularNominative: 'меньше {{count}} минуты', singularGenitive: 'меньше {{count}} минут', pluralGenitive: 'меньше {{count}} минут' }, future: { one: 'меньше, чем через минуту', singularNominative: 'меньше, чем через {{count}} минуту', singularGenitive: 'меньше, чем через {{count}} минуты', pluralGenitive: 'меньше, чем через {{count}} минут' } }), xMinutes: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} минута', singularGenitive: '{{count}} минуты', pluralGenitive: '{{count}} минут' }, past: { singularNominative: '{{count}} минуту назад', singularGenitive: '{{count}} минуты назад', pluralGenitive: '{{count}} минут назад' }, future: { singularNominative: 'через {{count}} минуту', singularGenitive: 'через {{count}} минуты', pluralGenitive: 'через {{count}} минут' } }), aboutXHours: buildLocalizeTokenFn({ regular: { singularNominative: 'около {{count}} часа', singularGenitive: 'около {{count}} часов', pluralGenitive: 'около {{count}} часов' }, future: { singularNominative: 'приблизительно через {{count}} час', singularGenitive: 'приблизительно через {{count}} часа', pluralGenitive: 'приблизительно через {{count}} часов' } }), xHours: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} час', singularGenitive: '{{count}} часа', pluralGenitive: '{{count}} часов' } }), xDays: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} день', singularGenitive: '{{count}} дня', pluralGenitive: '{{count}} дней' } }), aboutXWeeks: buildLocalizeTokenFn({ regular: { singularNominative: 'около {{count}} недели', singularGenitive: 'около {{count}} недель', pluralGenitive: 'около {{count}} недель' }, future: { singularNominative: 'приблизительно через {{count}} неделю', singularGenitive: 'приблизительно через {{count}} недели', pluralGenitive: 'приблизительно через {{count}} недель' } }), xWeeks: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} неделя', singularGenitive: '{{count}} недели', pluralGenitive: '{{count}} недель' } }), aboutXMonths: buildLocalizeTokenFn({ regular: { singularNominative: 'около {{count}} месяца', singularGenitive: 'около {{count}} месяцев', pluralGenitive: 'около {{count}} месяцев' }, future: { singularNominative: 'приблизительно через {{count}} месяц', singularGenitive: 'приблизительно через {{count}} месяца', pluralGenitive: 'приблизительно через {{count}} месяцев' } }), xMonths: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} месяц', singularGenitive: '{{count}} месяца', pluralGenitive: '{{count}} месяцев' } }), aboutXYears: buildLocalizeTokenFn({ regular: { singularNominative: 'около {{count}} года', singularGenitive: 'около {{count}} лет', pluralGenitive: 'около {{count}} лет' }, future: { singularNominative: 'приблизительно через {{count}} год', singularGenitive: 'приблизительно через {{count}} года', pluralGenitive: 'приблизительно через {{count}} лет' } }), xYears: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} год', singularGenitive: '{{count}} года', pluralGenitive: '{{count}} лет' } }), overXYears: buildLocalizeTokenFn({ regular: { singularNominative: 'больше {{count}} года', singularGenitive: 'больше {{count}} лет', pluralGenitive: 'больше {{count}} лет' }, future: { singularNominative: 'больше, чем через {{count}} год', singularGenitive: 'больше, чем через {{count}} года', pluralGenitive: 'больше, чем через {{count}} лет' } }), almostXYears: buildLocalizeTokenFn({ regular: { singularNominative: 'почти {{count}} год', singularGenitive: 'почти {{count}} года', pluralGenitive: 'почти {{count}} лет' }, future: { singularNominative: 'почти через {{count}} год', singularGenitive: 'почти через {{count}} года', pluralGenitive: 'почти через {{count}} лет' } }) }; function formatDistance(token, count, options) { options = options || {}; return formatDistanceLocale[token](count, options); } var dateFormats = { full: "EEEE, d MMMM y 'г.'", "long": "d MMMM y 'г.'", medium: "d MMM y 'г.'", "short": 'dd.MM.y' }; var timeFormats = { full: 'H:mm:ss zzzz', "long": 'H:mm:ss z', medium: 'H:mm:ss', "short": 'H:mm' }; var dateTimeFormats = { any: '{{date}}, {{time}}' }; var formatLong = { date: buildFormatLongFn({ formats: dateFormats, defaultWidth: 'full' }), time: buildFormatLongFn({ formats: timeFormats, defaultWidth: 'full' }), dateTime: buildFormatLongFn({ formats: dateTimeFormats, defaultWidth: 'any' }) }; var accusativeWeekdays = ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу']; function _lastWeek(day) { var weekday = accusativeWeekdays[day]; switch (day) { case 0: return "'в прошлое " + weekday + " в' p"; case 1: case 2: case 4: return "'в прошлый " + weekday + " в' p"; case 3: case 5: case 6: return "'в прошлую " + weekday + " в' p"; } } function thisWeek(day) { var weekday = accusativeWeekdays[day]; if (day === 2 /* Tue */ ) { return "'во " + weekday + " в' p"; } else { return "'в " + weekday + " в' p"; } } function _nextWeek(day) { var weekday = accusativeWeekdays[day]; switch (day) { case 0: return "'в следующее " + weekday + " в' p"; case 1: case 2: case 4: return "'в следующий " + weekday + " в' p"; case 3: case 5: case 6: return "'в следующую " + weekday + " в' p"; } } var formatRelativeLocale = { lastWeek: function lastWeek(date, baseDate, options) { var day = date.getUTCDay(); if (isSameUTCWeek(date, baseDate, options)) { return thisWeek(day); } else { return _lastWeek(day); } }, yesterday: "'вчера в' p", today: "'сегодня в' p", tomorrow: "'завтра в' p", nextWeek: function nextWeek(date, baseDate, options) { var day = date.getUTCDay(); if (isSameUTCWeek(date, baseDate, options)) { return thisWeek(day); } else { return _nextWeek(day); } }, other: 'P' }; function formatRelative(token, date, baseDate, options) { var format = formatRelativeLocale[token]; if (typeof format === 'function') { return format(date, baseDate, options); } return format; } var eraValues = { narrow: ['до н.э.', 'н.э.'], abbreviated: ['до н. э.', 'н. э.'], wide: ['до нашей эры', 'нашей эры'] }; var quarterValues = { narrow: ['1', '2', '3', '4'], abbreviated: ['1-й кв.', '2-й кв.', '3-й кв.', '4-й кв.'], wide: ['1-й квартал', '2-й квартал', '3-й квартал', '4-й квартал'] }; var monthValues = { narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], abbreviated: ['янв.', 'фев.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'], wide: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'] }; var formattingMonthValues = { narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'], abbreviated: ['янв.', 'фев.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'], wide: ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'] }; var dayValues = { narrow: ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'], "short": ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], abbreviated: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'суб'], wide: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'] }; var dayPeriodValues = { narrow: { am: 'ДП', pm: 'ПП', midnight: 'полн.', noon: 'полд.', morning: 'утро', afternoon: 'день', evening: 'веч.', night: 'ночь' }, abbreviated: { am: 'ДП', pm: 'ПП', midnight: 'полн.', noon: 'полд.', morning: 'утро', afternoon: 'день', evening: 'веч.', night: 'ночь' }, wide: { am: 'ДП', pm: 'ПП', midnight: 'полночь', noon: 'полдень', morning: 'утро', afternoon: 'день', evening: 'вечер', night: 'ночь' } }; var formattingDayPeriodValues = { narrow: { am: 'ДП', pm: 'ПП', midnight: 'полн.', noon: 'полд.', morning: 'утра', afternoon: 'дня', evening: 'веч.', night: 'ночи' }, abbreviated: { am: 'ДП', pm: 'ПП', midnight: 'полн.', noon: 'полд.', morning: 'утра', afternoon: 'дня', evening: 'веч.', night: 'ночи' }, wide: { am: 'ДП', pm: 'ПП', midnight: 'полночь', noon: 'полдень', morning: 'утра', afternoon: 'дня', evening: 'вечера', night: 'ночи' } }; function ordinalNumber(dirtyNumber, dirtyOptions) { var options = dirtyOptions || {}; var unit = String(options.unit); var suffix; if (unit === 'date') { suffix = '-е'; } else if (unit === 'week' || unit === 'minute' || unit === 'second') { suffix = '-я'; } else { suffix = '-й'; } return dirtyNumber + suffix; } var localize = { ordinalNumber: ordinalNumber, era: buildLocalizeFn({ values: eraValues, defaultWidth: 'wide' }), quarter: buildLocalizeFn({ values: quarterValues, defaultWidth: 'wide', argumentCallback: function argumentCallback(quarter) { return Number(quarter) - 1; } }), month: buildLocalizeFn({ values: monthValues, defaultWidth: 'wide', formattingValues: formattingMonthValues, defaultFormattingWidth: 'wide' }), day: buildLocalizeFn({ values: dayValues, defaultWidth: 'wide' }), dayPeriod: buildLocalizeFn({ values: dayPeriodValues, defaultWidth: 'any', formattingValues: formattingDayPeriodValues, defaultFormattingWidth: 'wide' }) }; var matchOrdinalNumberPattern = /^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i; var parseOrdinalNumberPattern = /\d+/i; var matchEraPatterns = { narrow: /^((до )?н\.?\s?э\.?)/i, abbreviated: /^((до )?н\.?\s?э\.?)/i, wide: /^(до нашей эры|нашей эры|наша эра)/i }; var parseEraPatterns = { any: [/^д/i, /^н/i] }; var matchQuarterPatterns = { narrow: /^[1234]/i, abbreviated: /^[1234](-?[ыои]?й?)? кв.?/i, wide: /^[1234](-?[ыои]?й?)? квартал/i }; var parseQuarterPatterns = { any: [/1/i, /2/i, /3/i, /4/i] }; var matchMonthPatterns = { narrow: /^[яфмаисонд]/i, abbreviated: /^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i, wide: /^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i }; var parseMonthPatterns = { narrow: [/^я/i, /^ф/i, /^м/i, /^а/i, /^м/i, /^и/i, /^и/i, /^а/i, /^с/i, /^о/i, /^н/i, /^я/i], any: [/^я/i, /^ф/i, /^мар/i, /^ап/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^ав/i, /^с/i, /^о/i, /^н/i, /^д/i] }; var matchDayPatterns = { narrow: /^[впсч]/i, "short": /^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i, abbreviated: /^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i, wide: /^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i }; var parseDayPatterns = { narrow: [/^в/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i], any: [/^в[ос]/i, /^п[он]/i, /^в/i, /^ср/i, /^ч/i, /^п[ят]/i, /^с[уб]/i] }; var matchDayPeriodPatterns = { narrow: /^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i, abbreviated: /^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i, wide: /^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i }; var parseDayPeriodPatterns = { any: { am: /^дп/i, pm: /^пп/i, midnight: /^полн/i, noon: /^полд/i, morning: /^у/i, afternoon: /^д[ен]/i, evening: /^в/i, night: /^н/i } }; var match = { ordinalNumber: buildMatchPatternFn({ matchPattern: matchOrdinalNumberPattern, parsePattern: parseOrdinalNumberPattern, valueCallback: function valueCallback(value) { return parseInt(value, 10); } }), era: buildMatchFn({ matchPatterns: matchEraPatterns, defaultMatchWidth: 'wide', parsePatterns: parseEraPatterns, defaultParseWidth: 'any' }), quarter: buildMatchFn({ matchPatterns: matchQuarterPatterns, defaultMatchWidth: 'wide', parsePatterns: parseQuarterPatterns, defaultParseWidth: 'any', valueCallback: function valueCallback(index) { return index + 1; } }), month: buildMatchFn({ matchPatterns: matchMonthPatterns, defaultMatchWidth: 'wide', parsePatterns: parseMonthPatterns, defaultParseWidth: 'any' }), day: buildMatchFn({ matchPatterns: matchDayPatterns, defaultMatchWidth: 'wide', parsePatterns: parseDayPatterns, defaultParseWidth: 'any' }), dayPeriod: buildMatchFn({ matchPatterns: matchDayPeriodPatterns, defaultMatchWidth: 'wide', parsePatterns: parseDayPeriodPatterns, defaultParseWidth: 'any' }) }; /** * @type {Locale} * @category Locales * @summary Russian locale. * @language Russian * @iso-639-2 rus * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp} * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss} */ var locale = { code: 'ru', formatDistance: formatDistance, formatLong: formatLong, formatRelative: formatRelative, localize: localize, match: match, options: { weekStartsOn: 1 /* Monday */ , firstWeekContainsDate: 1 } }; export default locale;