From: vsn4ik Date: Fri, 7 Aug 2015 21:33:16 +0000 (+0300) Subject: Fix russian locale for calendar next week X-Git-Tag: 2.11.0~55^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4aa10549f4dcdba2ec9428acf6418bf1a6bcc5c0;p=thirdparty%2Fmoment.git Fix russian locale for calendar next week --- diff --git a/src/locale/ru.js b/src/locale/ru.js index 913d6c48b..fceb406be 100644 --- a/src/locale/ru.js +++ b/src/locale/ru.js @@ -78,8 +78,27 @@ export default moment.defineLocale('ru', { sameDay: '[Сегодня в] LT', nextDay: '[Завтра в] LT', lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + nextWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В следующее] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В следующий] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В следующую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } }, lastWeek: function (now) { if (now.week() !== this.week()) { diff --git a/src/test/locale/ru.js b/src/test/locale/ru.js index 70caf845d..775d51469 100644 --- a/src/test/locale/ru.js +++ b/src/test/locale/ru.js @@ -236,18 +236,50 @@ test('calendar day', function (assert) { }); test('calendar next week', function (assert) { - var i, m; - function makeFormat(d) { - return d.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + var i, m, now; + + function makeFormatNext(d) { + switch (d.day()) { + case 0: + return '[В следующее] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В следующий] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В следующую] dddd [в] LT'; + } + } + + function makeFormatThis(d) { + if (d.day() === 2) { + return '[Во] dddd [в] LT'; + } + else { + return '[В] dddd [в] LT'; + } } + now = moment().startOf('week'); for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m = moment(now).add({d: i}); + assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days current time'); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days beginning of day'); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days end of day'); + } + + now = moment().endOf('week'); + for (i = 2; i < 7; i++) { + m = moment(now).add({d: i}); + assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days current time'); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days beginning of day'); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days end of day'); } }); @@ -270,15 +302,10 @@ test('calendar last week', function (assert) { } function makeFormatThis(d) { - switch (d.day()) { - case 2: + if (d.day() === 2) { return '[Во] dddd [в] LT'; - case 0: - case 1: - case 3: - case 4: - case 5: - case 6: + } + else { return '[В] dddd [в] LT'; } }