Localisation updates from https://translatewiki.net.
[mediawiki.git] / resources / lib / moment / locale / ru.js
blob863223e02454c033882835cd4d613f2490505865
1 //! moment.js locale configuration
2 //! locale : Russian [ru]
3 //! author : Viktorminator : https://github.com/Viktorminator
4 //! Author : Menelion Elensúle : https://github.com/Oire
5 //! author : Коренберг Марк : https://github.com/socketpair
7 ;(function (global, factory) {
8    typeof exports === 'object' && typeof module !== 'undefined'
9        && typeof require === 'function' ? factory(require('../moment')) :
10    typeof define === 'function' && define.amd ? define(['../moment'], factory) :
11    factory(global.moment)
12 }(this, (function (moment) { 'use strict';
14     //! moment.js locale configuration
16     function plural(word, num) {
17         var forms = word.split('_');
18         return num % 10 === 1 && num % 100 !== 11
19             ? forms[0]
20             : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
21             ? forms[1]
22             : forms[2];
23     }
24     function relativeTimeWithPlural(number, withoutSuffix, key) {
25         var format = {
26             ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
27             mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
28             hh: 'час_часа_часов',
29             dd: 'день_дня_дней',
30             MM: 'месяц_месяца_месяцев',
31             yy: 'год_года_лет',
32         };
33         if (key === 'm') {
34             return withoutSuffix ? 'минута' : 'минуту';
35         } else {
36             return number + ' ' + plural(format[key], +number);
37         }
38     }
39     var monthsParse = [
40         /^янв/i,
41         /^фев/i,
42         /^мар/i,
43         /^апр/i,
44         /^ма[йя]/i,
45         /^июн/i,
46         /^июл/i,
47         /^авг/i,
48         /^сен/i,
49         /^окт/i,
50         /^ноя/i,
51         /^дек/i,
52     ];
54     // http://new.gramota.ru/spravka/rules/139-prop : § 103
55     // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
56     // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
57     var ru = moment.defineLocale('ru', {
58         months: {
59             format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
60                 '_'
61             ),
62             standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
63                 '_'
64             ),
65         },
66         monthsShort: {
67             // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
68             format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
69                 '_'
70             ),
71             standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
72                 '_'
73             ),
74         },
75         weekdays: {
76             standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
77                 '_'
78             ),
79             format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
80                 '_'
81             ),
82             isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/,
83         },
84         weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
85         weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
86         monthsParse: monthsParse,
87         longMonthsParse: monthsParse,
88         shortMonthsParse: monthsParse,
90         // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
91         monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
93         // копия предыдущего
94         monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
96         // полные названия с падежами
97         monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
99         // Выражение, которое соотвествует только сокращённым формам
100         monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
101         longDateFormat: {
102             LT: 'H:mm',
103             LTS: 'H:mm:ss',
104             L: 'DD.MM.YYYY',
105             LL: 'D MMMM YYYY г.',
106             LLL: 'D MMMM YYYY г., H:mm',
107             LLLL: 'dddd, D MMMM YYYY г., H:mm',
108         },
109         calendar: {
110             sameDay: '[Сегодня, в] LT',
111             nextDay: '[Завтра, в] LT',
112             lastDay: '[Вчера, в] LT',
113             nextWeek: function (now) {
114                 if (now.week() !== this.week()) {
115                     switch (this.day()) {
116                         case 0:
117                             return '[В следующее] dddd, [в] LT';
118                         case 1:
119                         case 2:
120                         case 4:
121                             return '[В следующий] dddd, [в] LT';
122                         case 3:
123                         case 5:
124                         case 6:
125                             return '[В следующую] dddd, [в] LT';
126                     }
127                 } else {
128                     if (this.day() === 2) {
129                         return '[Во] dddd, [в] LT';
130                     } else {
131                         return '[В] dddd, [в] LT';
132                     }
133                 }
134             },
135             lastWeek: function (now) {
136                 if (now.week() !== this.week()) {
137                     switch (this.day()) {
138                         case 0:
139                             return '[В прошлое] dddd, [в] LT';
140                         case 1:
141                         case 2:
142                         case 4:
143                             return '[В прошлый] dddd, [в] LT';
144                         case 3:
145                         case 5:
146                         case 6:
147                             return '[В прошлую] dddd, [в] LT';
148                     }
149                 } else {
150                     if (this.day() === 2) {
151                         return '[Во] dddd, [в] LT';
152                     } else {
153                         return '[В] dddd, [в] LT';
154                     }
155                 }
156             },
157             sameElse: 'L',
158         },
159         relativeTime: {
160             future: 'через %s',
161             past: '%s назад',
162             s: 'несколько секунд',
163             ss: relativeTimeWithPlural,
164             m: relativeTimeWithPlural,
165             mm: relativeTimeWithPlural,
166             h: 'час',
167             hh: relativeTimeWithPlural,
168             d: 'день',
169             dd: relativeTimeWithPlural,
170             M: 'месяц',
171             MM: relativeTimeWithPlural,
172             y: 'год',
173             yy: relativeTimeWithPlural,
174         },
175         meridiemParse: /ночи|утра|дня|вечера/i,
176         isPM: function (input) {
177             return /^(дня|вечера)$/.test(input);
178         },
179         meridiem: function (hour, minute, isLower) {
180             if (hour < 4) {
181                 return 'ночи';
182             } else if (hour < 12) {
183                 return 'утра';
184             } else if (hour < 17) {
185                 return 'дня';
186             } else {
187                 return 'вечера';
188             }
189         },
190         dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
191         ordinal: function (number, period) {
192             switch (period) {
193                 case 'M':
194                 case 'd':
195                 case 'DDD':
196                     return number + '-й';
197                 case 'D':
198                     return number + '-го';
199                 case 'w':
200                 case 'W':
201                     return number + '-я';
202                 default:
203                     return number;
204             }
205         },
206         week: {
207             dow: 1, // Monday is the first day of the week.
208             doy: 4, // The week that contains Jan 4th is the first week of the year.
209         },
210     });
212     return ru;
214 })));