From: Chamie Date: Wed, 20 May 2020 00:02:50 +0000 (+0200) Subject: [locale] br: Add meridiem translation and correct quotemark (#5433) X-Git-Tag: 2.26.0~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=315abe846d9333cc4cea2d7781365d12ca3da347;p=thirdparty%2Fmoment.git [locale] br: Add meridiem translation and correct quotemark (#5433) --- diff --git a/src/locale/br.js b/src/locale/br.js index 1cd6043b0..9f1ea250e 100644 --- a/src/locale/br.js +++ b/src/locale/br.js @@ -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.'; + }, }); diff --git a/src/test/locale/br.js b/src/test/locale/br.js index ad21bb8cb..9a5d4d76c 100644 --- a/src/test/locale/br.js +++ b/src/test/locale/br.js @@ -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' ); });