]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Russian locale: Сокращения названий месяцев
authorКоренберг Марк (imac) <socketpair@gmail.com>
Mon, 22 Feb 2016 08:55:31 +0000 (13:55 +0500)
committerIskren Chernev <iskren.chernev@gmail.com>
Sat, 16 Apr 2016 05:59:35 +0000 (22:59 -0700)
src/lib/units/month.js
src/locale/ru.js
src/test/locale/ru.js

index 7a2e7ecff4c21034d012f7df29df7fe481f33dec..f1cef1550025d0a1388976c141289547bbf7d9cb 100644 (file)
@@ -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]);
index 5ed2a248a876fb6feb811cdc4fb66059f821dddd..b0388c8e7c832040aa45cdb604c7795dd2bf693f 100644 (file)
@@ -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('_'),
index ebc4965a27e3acfc064c3564612101d4a6e4ab4d..668bb9bd07fdf50767468a0ccfb93b93e876956b 100644 (file)
@@ -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]);