]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
[locale] br: Add meridiem translation and correct quotemark (#5433)
authorChamie <mail@chamie.fr>
Wed, 20 May 2020 00:02:50 +0000 (02:02 +0200)
committerGitHub <noreply@github.com>
Wed, 20 May 2020 00:02:50 +0000 (17:02 -0700)
src/locale/br.js
src/test/locale/br.js

index 1cd6043b088dac7eafede9107f489ff094bc5b70..9f1ea250e8b44c2e2174d0c3b409708c88704943 100644 (file)
@@ -48,15 +48,72 @@ function softMutation(text) {
     return mutationTable[text.charAt(0)] + text.substring(1);
 }
 
+var monthsParse = [
+        /^gen/i,
+        /^c[ʼ\']hwe/i,
+        /^meu/i,
+        /^ebr/i,
+        /^mae/i,
+        /^(mez|eve)/i,
+        /^gou/i,
+        /^eos/i,
+        /^gwe/i,
+        /^her/i,
+        /^du/i,
+        /^ker/i,
+    ],
+    monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
+    monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
+    monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
+    fullWeekdaysParse = [
+        /^sul/i,
+        /^lun/i,
+        /^meurzh/i,
+        /^merc[ʼ\']her/i,
+        /^yaou/i,
+        /^gwener/i,
+        /^sadorn/i,
+    ],
+    shortWeekdaysParse = [
+        /^Sul/i,
+        /^Lun/i,
+        /^Meu/i,
+        /^Mer/i,
+        /^Yao/i,
+        /^Gwe/i,
+        /^Sad/i,
+    ],
+    minWeekdaysParse = [
+        /^Su/i,
+        /^Lu/i,
+        /^Me([^r]|$)/i,
+        /^Mer/i,
+        /^Ya/i,
+        /^Gw/i,
+        /^Sa/i,
+    ];
+
 export default moment.defineLocale('br', {
-    months: "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split(
+    months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
         '_'
     ),
-    monthsShort: "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split('_'),
-    weekdays: "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split('_'),
+    monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
+    weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
     weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
     weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
-    weekdaysParseExact: true,
+    weekdaysParse: minWeekdaysParse,
+    fullWeekdaysParse: fullWeekdaysParse,
+    shortWeekdaysParse: shortWeekdaysParse,
+    minWeekdaysParse: minWeekdaysParse,
+
+    monthsRegex: monthsRegex,
+    monthsShortRegex: monthsRegex,
+    monthsStrictRegex: monthsStrictRegex,
+    monthsShortStrictRegex: monthsShortStrictRegex,
+    monthsParse: monthsParse,
+    longMonthsParse: monthsParse,
+    shortMonthsParse: monthsParse,
+
     longDateFormat: {
         LT: 'HH:mm',
         LTS: 'HH:mm:ss',
@@ -67,15 +124,15 @@ export default moment.defineLocale('br', {
     },
     calendar: {
         sameDay: '[Hiziv da] LT',
-        nextDay: "[Warc'hoazh da] LT",
+        nextDay: '[Warcʼhoazh da] LT',
         nextWeek: 'dddd [da] LT',
-        lastDay: "[Dec'h da] LT",
+        lastDay: '[Decʼh da] LT',
         lastWeek: 'dddd [paset da] LT',
         sameElse: 'L',
     },
     relativeTime: {
         future: 'a-benn %s',
-        past: "%s 'zo",
+        past: '%s ʼzo',
         s: 'un nebeud segondennoù',
         ss: '%d eilenn',
         m: 'ur vunutenn',
@@ -98,4 +155,11 @@ export default moment.defineLocale('br', {
         dow: 1, // Monday is the first day of the week.
         doy: 4, // The week that contains Jan 4th is the first week of the year.
     },
+    meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
+    isPM: function (token) {
+        return token === 'g.m.';
+    },
+    meridiem: function (hour, minute, isLower) {
+        return hour < 12 ? 'a.m.' : 'g.m.';
+    },
 });
index ad21bb8cb29723f0bbbc4483a12dc09b9ae5b738..9a5d4d76c3c5dcf6d6f1cfd5637c3b24c72a9f87 100644 (file)
@@ -4,10 +4,12 @@ import moment from '../../moment';
 localeModule('br');
 
 test('parse', function (assert) {
-    var tests = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split(
+    var tests = 'Genver Gen_Cʼhwevrer Cʼhwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split(
             '_'
         ),
-        i;
+        i,
+        monthsWithRegularQuoteMark = ["C'hwevrer", "C'hwe"];
+
     function equalTest(input, mmm, i) {
         assert.equal(
             moment(input, mmm).month(),
@@ -42,6 +44,41 @@ test('parse', function (assert) {
         equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
         equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
     }
+
+    // check with regular quote mark
+    equalTest(monthsWithRegularQuoteMark[0], 'MMM', 1);
+    equalTest(monthsWithRegularQuoteMark[1], 'MMM', 1);
+    equalTest(monthsWithRegularQuoteMark[0], 'MMMM', 1);
+    equalTest(monthsWithRegularQuoteMark[1], 'MMMM', 1);
+    equalTest(monthsWithRegularQuoteMark[0].toLocaleLowerCase(), 'MMM', 1);
+    equalTest(monthsWithRegularQuoteMark[1].toLocaleLowerCase(), 'MMM', 1);
+    equalTest(monthsWithRegularQuoteMark[0].toLocaleUpperCase(), 'MMMM', 1);
+    equalTest(monthsWithRegularQuoteMark[1].toLocaleUpperCase(), 'MMMM', 1);
+
+    assert.notEqual(
+        moment(monthsWithRegularQuoteMark[0], 'MMM', true).month(),
+        1
+    );
+    equalTestStrict(monthsWithRegularQuoteMark[1], 'MMM', 1);
+    equalTest(monthsWithRegularQuoteMark[0], 'MMMM', 1);
+    assert.notEqual(
+        moment(monthsWithRegularQuoteMark[1], 'MMMM', true).month(),
+        1
+    );
+    equalTest(monthsWithRegularQuoteMark[1].toLocaleLowerCase(), 'MMM', 1);
+    equalTest(monthsWithRegularQuoteMark[0].toLocaleUpperCase(), 'MMMM', 1);
+
+    // check weekday with regular quote mark
+    assert.equal(
+        moment("merc'her", 'dddd', true).day(),
+        3,
+        "merc'her (regular quote)"
+    );
+    assert.equal(
+        moment('mercʼher', 'dddd', true).day(),
+        3,
+        'mercʼher (special quote)'
+    );
 });
 
 test('format', function (assert) {
@@ -49,10 +86,10 @@ test('format', function (assert) {
     var a = [
             [
                 'dddd, MMMM Do YYYY, h:mm:ss a',
-                "Sul, C'hwevrer 14vet 2010, 3:25:50 pm",
+                'Sul, Cʼhwevrer 14vet 2010, 3:25:50 g.m.',
             ],
-            ['ddd, h A', 'Sul, 3 PM'],
-            ['M Mo MM MMMM MMM', "2 2vet 02 C'hwevrer C'hwe"],
+            ['ddd, h A', 'Sul, 3 g.m.'],
+            ['M Mo MM MMMM MMM', '2 2vet 02 Cʼhwevrer Cʼhwe'],
             ['YYYY YY', '2010 10'],
             ['D Do DD', '14 14vet 14'],
             ['d do dddd ddd dd', '0 0vet Sul Sul Su'],
@@ -64,9 +101,9 @@ test('format', function (assert) {
             ['s ss', '50 50'],
             ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'],
             ['L', '14/02/2010'],
-            ['LL', "14 a viz C'hwevrer 2010"],
-            ['LLL', "14 a viz C'hwevrer 2010 15:25"],
-            ['LLLL', "Sul, 14 a viz C'hwevrer 2010 15:25"],
+            ['LL', '14 a viz Cʼhwevrer 2010'],
+            ['LLL', '14 a viz Cʼhwevrer 2010 15:25'],
+            ['LLLL', 'Sul, 14 a viz Cʼhwevrer 2010 15:25'],
         ],
         b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
         i;
@@ -115,7 +152,7 @@ test('format ordinal', function (assert) {
 
 test('format month', function (assert) {
     moment.locale('br');
-    var expected = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split(
+    var expected = 'Genver Gen_Cʼhwevrer Cʼhwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split(
             '_'
         ),
         i;
@@ -130,7 +167,7 @@ test('format month', function (assert) {
 
 test('format week', function (assert) {
     moment.locale('br');
-    var expected = "Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Merc'her Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa".split(
+    var expected = 'Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Mercʼher Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa'.split(
             '_'
         ),
         i;
@@ -295,14 +332,14 @@ test('suffix', function (assert) {
         'a-benn un nebeud segondennoù',
         'prefix'
     );
-    assert.equal(moment(0).from(30000), "un nebeud segondennoù 'zo", 'suffix');
+    assert.equal(moment(0).from(30000), 'un nebeud segondennoù ʼzo', 'suffix');
 });
 
 test('now from now', function (assert) {
     moment.locale('br');
     assert.equal(
         moment().fromNow(),
-        "un nebeud segondennoù 'zo",
+        'un nebeud segondennoù ʼzo',
         'now from now should display as in the past'
     );
 });
@@ -353,12 +390,12 @@ test('calendar day', function (assert) {
     );
     assert.equal(
         moment(a).add({ d: 1 }).calendar(),
-        "Warc'hoazh da 12:00",
+        'Warcʼhoazh da 12:00',
         'tomorrow at the same time'
     );
     assert.equal(
         moment(a).subtract({ d: 1 }).calendar(),
-        "Dec'h da 12:00",
+        'Decʼh da 12:00',
         'yesterday at the same time'
     );
 });