From: Коренберг Марк (imac) Date: Mon, 22 Feb 2016 08:55:31 +0000 (+0500) Subject: Russian locale: Сокращения названий месяцев X-Git-Tag: 2.13.0~25^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df479ac7c62c15e43bf1923f342806308bd520bb;p=thirdparty%2Fmoment.git Russian locale: Сокращения названий месяцев --- diff --git a/src/lib/units/month.js b/src/lib/units/month.js index 7a2e7ecff..f1cef1550 100644 --- a/src/lib/units/month.js +++ b/src/lib/units/month.js @@ -128,6 +128,9 @@ export function localeMonthsParse (monthName, format, strict) { this._shortMonthsParse = []; } + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); diff --git a/src/locale/ru.js b/src/locale/ru.js index 5ed2a248a..b0388c8e7 100644 --- a/src/locale/ru.js +++ b/src/locale/ru.js @@ -25,17 +25,20 @@ function relativeTimeWithPlural(number, withoutSuffix, key) { return number + ' ' + plural(format[key], +number); } } -var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; +var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; // http://new.gramota.ru/spravka/rules/139-prop : § 103 +// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 +// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 export default moment.defineLocale('ru', { months : { format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') }, monthsShort : { - format: 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_'), - standalone: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_') + // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') }, weekdays : { standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), diff --git a/src/test/locale/ru.js b/src/test/locale/ru.js index ebc4965a2..668bb9bd0 100644 --- a/src/test/locale/ru.js +++ b/src/test/locale/ru.js @@ -3,7 +3,7 @@ import moment from '../../moment'; localeModule('ru'); test('parse', function (assert) { - var tests = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; + var tests = 'январь янв._февраль февр._март март_апрель апр._май май_июнь июнь_июль июль_август авг._сентябрь сент._октябрь окт._ноябрь нояб._декабрь дек.'.split('_'), i; function equalTest(input, mmm, i) { assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); } @@ -38,7 +38,7 @@ test('format', function (assert) { var a = [ ['dddd, Do MMMM YYYY, HH:mm:ss', 'воскресенье, 14-го февраля 2010, 15:25:50'], ['ddd, h A', 'вс, 3 дня'], - ['M Mo MM MMMM MMM', '2 2-й 02 февраль фев'], + ['M Mo MM MMMM MMM', '2 2-й 02 февраль февр.'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14-го 14'], ['d do dddd ddd dd', '0 0-й воскресенье вс вс'], @@ -56,9 +56,9 @@ test('format', function (assert) { ['LLL', '14 февраля 2010 г., 15:25'], ['LLLL', 'воскресенье, 14 февраля 2010 г., 15:25'], ['l', '14.2.2010'], - ['ll', '14 фев 2010 г.'], - ['lll', '14 фев 2010 г., 15:25'], - ['llll', 'вс, 14 фев 2010 г., 15:25'] + ['ll', '14 февр. 2010 г.'], + ['lll', '14 февр. 2010 г., 15:25'], + ['llll', 'вс, 14 февр. 2010 г., 15:25'] ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -116,7 +116,7 @@ test('format ordinal', function (assert) { }); test('format month', function (assert) { - var expected = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; + var expected = 'январь янв._февраль февр._март март_апрель апр._май май_июнь июнь_июль июль_август авг._сентябрь сент._октябрь окт._ноябрь нояб._декабрь дек.'.split('_'), i; for (i = 0; i < expected.length; i++) { assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); } @@ -135,8 +135,8 @@ test('format month case', function (assert) { test('format month short case', function (assert) { var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + 'nominative': 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_'), + 'accusative': 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_') }, i; for (i = 0; i < 12; i++) { assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); @@ -159,8 +159,8 @@ test('format month case with escaped symbols', function (assert) { test('format month short case with escaped symbols', function (assert) { var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + 'nominative': 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_'), + 'accusative': 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_') }, i; for (i = 0; i < 12; i++) { assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);