MailPoet Newsletters (New) - Version 3.0.0-beta.22

Version Description

  • 2017-03-07 =
  • Improved: sending very large emails with our sending service is less likely to time out. Thanks Mark!;
  • Fixed: WordPress warnings are no longer displayed in the editor's contents;
  • Small, little and tiny improvements to show we pay attention to details;
  • British scientists say people whose sites run on PHP below version 7 have the lowest quality of life.
Download this release

Release Info

Developer wysija
Plugin Icon 128x128 MailPoet Newsletters (New)
Version 3.0.0-beta.22
Comparing to
See all releases

Code changes from version 3.0.0-beta.21 to 3.0.0-beta.22

assets/css/newsletter_editor.css CHANGED
@@ -2461,6 +2461,7 @@ body {
2461
  display: none;
2462
  }
2463
  .wrap > .mailpoet_notice,
 
2464
  .update-nag {
2465
  margin-left: 17px !important;
2466
  }
2461
  display: none;
2462
  }
2463
  .wrap > .mailpoet_notice,
2464
+ .notice,
2465
  .update-nag {
2466
  margin-left: 17px !important;
2467
  }
assets/js/mailpoet.js CHANGED
@@ -18093,7 +18093,7 @@ webpackJsonp([2],[
18093
 
18094
  /* WEBPACK VAR INJECTION */(function(global) {/*!
18095
  * Parsley.js
18096
- * Version 2.6.5 - built Fri, Feb 24th 2017, 3:50 pm
18097
  * http://parsleyjs.org
18098
  * Guillaume Potier - <guillaume@wisembly.com>
18099
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
@@ -18105,6 +18105,8 @@ webpackJsonp([2],[
18105
  //
18106
  var _slice = Array.prototype.slice;
18107
 
 
 
18108
  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
18109
 
18110
  (function (global, factory) {
@@ -18115,7 +18117,7 @@ webpackJsonp([2],[
18115
  var globalID = 1;
18116
  var pastWarnings = {};
18117
 
18118
- var ParsleyUtils__ParsleyUtils = {
18119
  // Parsley DOM-API
18120
  // returns object from dom attributes and values
18121
  attr: function attr($element, namespace, obj) {
@@ -18202,6 +18204,70 @@ webpackJsonp([2],[
18202
  return string.replace(/^\s+|\s+$/g, '');
18203
  },
18204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18205
  namespaceEvents: function namespaceEvents(events, namespace) {
18206
  events = this.trimString(events || '').split(/\s+/);
18207
  if (!events[0]) return '';
@@ -18245,14 +18311,14 @@ webpackJsonp([2],[
18245
  _SubmitSelector: 'input[type="submit"], button:submit'
18246
  };
18247
 
18248
- var ParsleyUtils__default = ParsleyUtils__ParsleyUtils;
18249
 
18250
  // All these options could be overriden and specified directly in DOM using
18251
  // `data-parsley-` default DOM-API
18252
  // eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
18253
  // eg: `data-parsley-stop-on-first-failing-constraint="false"`
18254
 
18255
- var ParsleyDefaults = {
18256
  // ### General
18257
 
18258
  // Default data-namespace for DOM API
@@ -18299,11 +18365,11 @@ webpackJsonp([2],[
18299
 
18300
  // Return the `$element` that will receive these above success or error classes
18301
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
18302
- classHandler: function classHandler(ParsleyField) {},
18303
 
18304
  // Return the `$element` where errors will be appended
18305
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
18306
- errorsContainer: function errorsContainer(ParsleyField) {},
18307
 
18308
  // ul elem that would receive errors' list
18309
  errorsWrapper: '<ul class="parsley-errors-list"></ul>',
@@ -18312,11 +18378,11 @@ webpackJsonp([2],[
18312
  errorTemplate: '<li></li>'
18313
  };
18314
 
18315
- var ParsleyAbstract = function ParsleyAbstract() {
18316
- this.__id__ = ParsleyUtils__default.generateID();
18317
  };
18318
 
18319
- ParsleyAbstract.prototype = {
18320
  asyncSupport: true, // Deprecated
18321
 
18322
  _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
@@ -18331,14 +18397,14 @@ webpackJsonp([2],[
18331
  },
18332
 
18333
  actualizeOptions: function actualizeOptions() {
18334
- ParsleyUtils__default.attr(this.$element, this.options.namespace, this.domOptions);
18335
  if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
18336
  return this;
18337
  },
18338
 
18339
  _resetOptions: function _resetOptions(initOptions) {
18340
- this.domOptions = ParsleyUtils__default.objectCreate(this.parent.options);
18341
- this.options = ParsleyUtils__default.objectCreate(this.domOptions);
18342
  // Shallow copy of ownProperties of initOptions:
18343
  for (var i in initOptions) {
18344
  if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
@@ -18404,7 +18470,7 @@ webpackJsonp([2],[
18404
  },
18405
 
18406
  asyncIsValid: function asyncIsValid(group, force) {
18407
- ParsleyUtils__default.warnOnce("asyncIsValid is deprecated; please use whenValid instead");
18408
  return this.whenValid({ group: group, force: force });
18409
  },
18410
 
@@ -18413,73 +18479,24 @@ webpackJsonp([2],[
18413
  }
18414
  };
18415
 
18416
- var requirementConverters = {
18417
- string: function string(_string) {
18418
- return _string;
18419
- },
18420
- integer: function integer(string) {
18421
- if (isNaN(string)) throw 'Requirement is not an integer: "' + string + '"';
18422
- return parseInt(string, 10);
18423
- },
18424
- number: function number(string) {
18425
- if (isNaN(string)) throw 'Requirement is not a number: "' + string + '"';
18426
- return parseFloat(string);
18427
- },
18428
- reference: function reference(string) {
18429
- // Unused for now
18430
- var result = $(string);
18431
- if (result.length === 0) throw 'No such reference: "' + string + '"';
18432
- return result;
18433
- },
18434
- 'boolean': function _boolean(string) {
18435
- return string !== 'false';
18436
- },
18437
- object: function object(string) {
18438
- return ParsleyUtils__default.deserializeValue(string);
18439
- },
18440
- regexp: function regexp(_regexp) {
18441
- var flags = '';
18442
-
18443
- // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
18444
- if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
18445
- // Replace the regexp literal string with the first match group: ([gimy]*)
18446
- // If no flag is present, this will be a blank string
18447
- flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
18448
- // Again, replace the regexp literal string with the first match group:
18449
- // everything excluding the opening and closing slashes and the flags
18450
- _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
18451
- } else {
18452
- // Anchor regexp:
18453
- _regexp = '^' + _regexp + '$';
18454
- }
18455
- return new RegExp(_regexp, flags);
18456
- }
18457
- };
18458
-
18459
  var convertArrayRequirement = function convertArrayRequirement(string, length) {
18460
  var m = string.match(/^\s*\[(.*)\]\s*$/);
18461
  if (!m) throw 'Requirement is not an array: "' + string + '"';
18462
- var values = m[1].split(',').map(ParsleyUtils__default.trimString);
18463
  if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
18464
  return values;
18465
  };
18466
 
18467
- var convertRequirement = function convertRequirement(requirementType, string) {
18468
- var converter = requirementConverters[requirementType || 'string'];
18469
- if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
18470
- return converter(string);
18471
- };
18472
-
18473
  var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
18474
  var main = null;
18475
  var extra = {};
18476
  for (var key in requirementSpec) {
18477
  if (key) {
18478
  var value = extraOptionReader(key);
18479
- if ('string' === typeof value) value = convertRequirement(requirementSpec[key], value);
18480
  extra[key] = value;
18481
  } else {
18482
- main = convertRequirement(requirementSpec[key], string);
18483
  }
18484
  }
18485
  return [main, extra];
@@ -18487,11 +18504,11 @@ webpackJsonp([2],[
18487
 
18488
  // A Validator needs to implement the methods `validate` and `parseRequirements`
18489
 
18490
- var ParsleyValidator = function ParsleyValidator(spec) {
18491
  $.extend(true, this, spec);
18492
  };
18493
 
18494
- ParsleyValidator.prototype = {
18495
  // Returns `true` iff the given `value` is valid according the given requirements.
18496
  validate: function validate(value, requirementFirstArg) {
18497
  if (this.fn) {
@@ -18506,6 +18523,12 @@ webpackJsonp([2],[
18506
  if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
18507
  return this.validateMultiple.apply(this, arguments);
18508
  } else {
 
 
 
 
 
 
18509
  if (this.validateNumber) {
18510
  if (isNaN(value)) return false;
18511
  arguments[0] = parseFloat(arguments[0]);
@@ -18529,12 +18552,12 @@ webpackJsonp([2],[
18529
  var type = this.requirementType;
18530
  if ($.isArray(type)) {
18531
  var values = convertArrayRequirement(requirements, type.length);
18532
- for (var i = 0; i < values.length; i++) values[i] = convertRequirement(type[i], values[i]);
18533
  return values;
18534
  } else if ($.isPlainObject(type)) {
18535
  return convertExtraOptionRequirement(type, requirements, extraOptionReader);
18536
  } else {
18537
- return [convertRequirement(type, requirements)];
18538
  }
18539
  },
18540
  // Defaults:
@@ -18544,8 +18567,8 @@ webpackJsonp([2],[
18544
 
18545
  };
18546
 
18547
- var ParsleyValidatorRegistry = function ParsleyValidatorRegistry(validators, catalog) {
18548
- this.__class__ = 'ParsleyValidatorRegistry';
18549
 
18550
  // Default Parsley locale is en
18551
  this.locale = 'en';
@@ -18553,7 +18576,7 @@ webpackJsonp([2],[
18553
  this.init(validators || {}, catalog || {});
18554
  };
18555
 
18556
- var typeRegexes = {
18557
  email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
18558
 
18559
  // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
@@ -18565,6 +18588,12 @@ webpackJsonp([2],[
18565
 
18566
  alphanum: /^\w+$/i,
18567
 
 
 
 
 
 
 
18568
  url: new RegExp("^" +
18569
  // protocol identifier
18570
  "(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
@@ -18592,7 +18621,7 @@ webpackJsonp([2],[
18592
  // resource path
18593
  "(?:/\\S*)?" + "$", 'i')
18594
  };
18595
- typeRegexes.range = typeRegexes.number;
18596
 
18597
  // See http://stackoverflow.com/a/10454560/8279
18598
  var decimalPlaces = function decimalPlaces(num) {
@@ -18607,7 +18636,32 @@ webpackJsonp([2],[
18607
  match[2] ? +match[2] : 0));
18608
  };
18609
 
18610
- ParsleyValidatorRegistry.prototype = {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18611
  init: function init(validators, catalog) {
18612
  this.catalog = catalog;
18613
  // Copy prototype's validators:
@@ -18667,8 +18721,8 @@ webpackJsonp([2],[
18667
  // Old API was addValidator(name, function, priority)
18668
  //
18669
  addValidator: function addValidator(name, arg1, arg2) {
18670
- if (this.validators[name]) ParsleyUtils__default.warn('Validator "' + name + '" is already defined.');else if (ParsleyDefaults.hasOwnProperty(name)) {
18671
- ParsleyUtils__default.warn('"' + name + '" is a restricted keyword and is not a valid validator name.');
18672
  return;
18673
  }
18674
  return this._setValidator.apply(this, arguments);
@@ -18676,14 +18730,14 @@ webpackJsonp([2],[
18676
 
18677
  updateValidator: function updateValidator(name, arg1, arg2) {
18678
  if (!this.validators[name]) {
18679
- ParsleyUtils__default.warn('Validator "' + name + '" is not already defined.');
18680
  return this.addValidator.apply(this, arguments);
18681
  }
18682
  return this._setValidator.apply(this, arguments);
18683
  },
18684
 
18685
  removeValidator: function removeValidator(name) {
18686
- if (!this.validators[name]) ParsleyUtils__default.warn('Validator "' + name + '" is not defined.');
18687
 
18688
  delete this.validators[name];
18689
 
@@ -18699,7 +18753,7 @@ webpackJsonp([2],[
18699
  };
18700
  }
18701
  if (!validator.validate) {
18702
- validator = new ParsleyValidator(validator);
18703
  }
18704
  this.validators[name] = validator;
18705
 
@@ -18765,11 +18819,11 @@ webpackJsonp([2],[
18765
  var _ref$base = _ref.base;
18766
  var base = _ref$base === undefined ? 0 : _ref$base;
18767
 
18768
- var regex = typeRegexes[type];
18769
- if (!regex) {
18770
  throw new Error('validator type `' + type + '` is not supported');
18771
  }
18772
- if (!regex.test(value)) return false;
18773
  if ('number' === type) {
18774
  if (!/^any$/i.test(step || '')) {
18775
  var nb = Number(value);
@@ -18841,27 +18895,15 @@ webpackJsonp([2],[
18841
  requirementType: ['integer', 'integer'],
18842
  priority: 30
18843
  },
18844
- min: {
18845
- validateNumber: function validateNumber(value, requirement) {
18846
- return value >= requirement;
18847
- },
18848
- requirementType: 'number',
18849
- priority: 30
18850
- },
18851
- max: {
18852
- validateNumber: function validateNumber(value, requirement) {
18853
- return value <= requirement;
18854
- },
18855
- requirementType: 'number',
18856
- priority: 30
18857
- },
18858
- range: {
18859
- validateNumber: function validateNumber(value, min, max) {
18860
- return value >= min && value <= max;
18861
- },
18862
- requirementType: ['number', 'number'],
18863
- priority: 30
18864
- },
18865
  equalto: {
18866
  validateString: function validateString(value, refOrValue) {
18867
  var $reference = $(refOrValue);
@@ -18872,7 +18914,7 @@ webpackJsonp([2],[
18872
  }
18873
  };
18874
 
18875
- var ParsleyUI = {};
18876
 
18877
  var diffResults = function diffResults(newResult, oldResult, deep) {
18878
  var added = [];
@@ -18896,7 +18938,7 @@ webpackJsonp([2],[
18896
  };
18897
  };
18898
 
18899
- ParsleyUI.Form = {
18900
 
18901
  _actualizeTriggers: function _actualizeTriggers() {
18902
  var _this2 = this;
@@ -18904,7 +18946,7 @@ webpackJsonp([2],[
18904
  this.$element.on('submit.Parsley', function (evt) {
18905
  _this2.onSubmitValidate(evt);
18906
  });
18907
- this.$element.on('click.Parsley', ParsleyUtils__default._SubmitSelector, function (evt) {
18908
  _this2.onSubmitButton(evt);
18909
  });
18910
 
@@ -18939,7 +18981,7 @@ webpackJsonp([2],[
18939
 
18940
  };
18941
 
18942
- ParsleyUI.Field = {
18943
 
18944
  _reflowUI: function _reflowUI() {
18945
  this._buildUI();
@@ -19135,7 +19177,7 @@ webpackJsonp([2],[
19135
  if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
19136
 
19137
  if ('string' === typeof this.options.errorsContainer) {
19138
- if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else ParsleyUtils__default.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM');
19139
  } else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
19140
 
19141
  if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
@@ -19151,9 +19193,9 @@ webpackJsonp([2],[
19151
 
19152
  // Remove Parsley events already bound on this field
19153
  $toBind.off('.Parsley');
19154
- if (this._failedOnce) $toBind.on(ParsleyUtils__default.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {
19155
  _this3._validateIfNeeded();
19156
- });else if (trigger = ParsleyUtils__default.namespaceEvents(this.options.trigger, 'Parsley')) {
19157
  $toBind.on(trigger, function (event) {
19158
  _this3._validateIfNeeded(event);
19159
  });
@@ -19216,8 +19258,8 @@ webpackJsonp([2],[
19216
  }
19217
  };
19218
 
19219
- var ParsleyForm = function ParsleyForm(element, domOptions, options) {
19220
- this.__class__ = 'ParsleyForm';
19221
 
19222
  this.$element = $(element);
19223
  this.domOptions = domOptions;
@@ -19228,9 +19270,9 @@ webpackJsonp([2],[
19228
  this.validationResult = null;
19229
  };
19230
 
19231
- var ParsleyForm__statusMapping = { pending: null, resolved: true, rejected: false };
19232
 
19233
- ParsleyForm.prototype = {
19234
  onSubmitValidate: function onSubmitValidate(event) {
19235
  var _this5 = this;
19236
 
@@ -19238,7 +19280,7 @@ webpackJsonp([2],[
19238
  if (true === event.parsley) return;
19239
 
19240
  // If we didn't come here through a submit button, use the first one in the form
19241
- var $submitSource = this._$submitSource || this.$element.find(ParsleyUtils__default._SubmitSelector).first();
19242
  this._$submitSource = null;
19243
  this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
19244
  if ($submitSource.is('[formnovalidate]')) return;
@@ -19286,7 +19328,7 @@ webpackJsonp([2],[
19286
  // Consider using `whenValidate` instead.
19287
  validate: function validate(options) {
19288
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19289
- ParsleyUtils__default.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');
19290
 
19291
  var _arguments = _slice.call(arguments);
19292
 
@@ -19296,11 +19338,11 @@ webpackJsonp([2],[
19296
 
19297
  options = { group: group, force: force, event: event };
19298
  }
19299
- return ParsleyForm__statusMapping[this.whenValidate(options).state()];
19300
  },
19301
 
19302
  whenValidate: function whenValidate() {
19303
- var _ParsleyUtils__default$all$done$fail$always,
19304
  _this6 = this;
19305
 
19306
  var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
@@ -19312,7 +19354,7 @@ webpackJsonp([2],[
19312
  this.submitEvent = event;
19313
  if (event) {
19314
  this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
19315
- ParsleyUtils__default.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`");
19316
  _this6.validationResult = false;
19317
  } });
19318
  }
@@ -19330,7 +19372,7 @@ webpackJsonp([2],[
19330
  });
19331
  });
19332
 
19333
- return (_ParsleyUtils__default$all$done$fail$always = ParsleyUtils__default.all(promises).done(function () {
19334
  _this6._trigger('success');
19335
  }).fail(function () {
19336
  _this6.validationResult = false;
@@ -19338,7 +19380,7 @@ webpackJsonp([2],[
19338
  _this6._trigger('error');
19339
  }).always(function () {
19340
  _this6._trigger('validated');
19341
- })).pipe.apply(_ParsleyUtils__default$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));
19342
  },
19343
 
19344
  // Iterate over refreshed fields, and stop on first failure.
@@ -19347,7 +19389,7 @@ webpackJsonp([2],[
19347
  // Prefer using `whenValid` instead.
19348
  isValid: function isValid(options) {
19349
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19350
- ParsleyUtils__default.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');
19351
 
19352
  var _arguments2 = _slice.call(arguments);
19353
 
@@ -19356,7 +19398,7 @@ webpackJsonp([2],[
19356
 
19357
  options = { group: group, force: force };
19358
  }
19359
- return ParsleyForm__statusMapping[this.whenValid(options).state()];
19360
  },
19361
 
19362
  // Iterate over refreshed fields and validate them.
@@ -19377,7 +19419,7 @@ webpackJsonp([2],[
19377
  return field.whenValid({ group: group, force: force });
19378
  });
19379
  });
19380
- return ParsleyUtils__default.all(promises);
19381
  },
19382
 
19383
  // Reset UI
@@ -19416,8 +19458,8 @@ webpackJsonp([2],[
19416
  _this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
19417
  var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
19418
 
19419
- // Only add valid and not excluded `ParsleyField` and `ParsleyFieldMultiple` children
19420
- if (('ParsleyField' === fieldInstance.__class__ || 'ParsleyFieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) {
19421
  var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
19422
  if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
19423
  _this8.fieldsMappedById[uniqueId] = fieldInstance;
@@ -19426,7 +19468,7 @@ webpackJsonp([2],[
19426
  }
19427
  });
19428
 
19429
- $.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
19430
  field.reset();
19431
  });
19432
  });
@@ -19461,7 +19503,7 @@ webpackJsonp([2],[
19461
 
19462
  var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
19463
  var validatorSpec = window.Parsley._validatorRegistry.validators[name];
19464
- var validator = new ParsleyValidator(validatorSpec);
19465
 
19466
  $.extend(this, {
19467
  validator: validator,
@@ -19494,8 +19536,8 @@ webpackJsonp([2],[
19494
  }
19495
  };
19496
 
19497
- var ParsleyField = function ParsleyField(field, domOptions, options, parsleyFormInstance) {
19498
- this.__class__ = 'ParsleyField';
19499
 
19500
  this.$element = $(field);
19501
 
@@ -19518,14 +19560,14 @@ webpackJsonp([2],[
19518
 
19519
  var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
19520
 
19521
- ParsleyField.prototype = {
19522
  // # Public API
19523
- // Validate field and trigger some events for mainly `ParsleyUI`
19524
  // @returns `true`, an array of the validators that failed, or
19525
  // `null` if validation is not finished. Prefer using whenValidate
19526
  validate: function validate(options) {
19527
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19528
- ParsleyUtils__default.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');
19529
  options = { options: options };
19530
  }
19531
  var promise = this.whenValidate(options);
@@ -19541,7 +19583,7 @@ webpackJsonp([2],[
19541
  }
19542
  },
19543
 
19544
- // Validate field and trigger some events for mainly `ParsleyUI`
19545
  // @returns a promise that succeeds only when all validations do
19546
  // or `undefined` if field is not in the given `group`.
19547
  whenValidate: function whenValidate() {
@@ -19599,7 +19641,7 @@ webpackJsonp([2],[
19599
  // See also `whenValid`.
19600
  isValid: function isValid(options) {
19601
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19602
- ParsleyUtils__default.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');
19603
 
19604
  var _arguments3 = _slice.call(arguments);
19605
 
@@ -19650,13 +19692,13 @@ webpackJsonp([2],[
19650
  $.each(groupedConstraints, function (_, constraints) {
19651
  // Process one group of constraints at a time, we validate the constraints
19652
  // and combine the promises together.
19653
- var promise = ParsleyUtils__default.all($.map(constraints, function (constraint) {
19654
  return _this11._validateConstraint(value, constraint);
19655
  }));
19656
  promises.push(promise);
19657
  if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
19658
  });
19659
- return ParsleyUtils__default.all(promises);
19660
  },
19661
 
19662
  // @returns a promise
@@ -19667,7 +19709,7 @@ webpackJsonp([2],[
19667
  // Map false to a failed promise
19668
  if (false === result) result = $.Deferred().reject();
19669
  // Make sure we return a promise and that we record failures
19670
- return ParsleyUtils__default.all([result]).fail(function (errorMessage) {
19671
  if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
19672
  _this12.validationResult.push({
19673
  assert: constraint,
@@ -19700,7 +19742,7 @@ webpackJsonp([2],[
19700
  // Field case: emit destroy event to clean UI and then destroy stored instance
19701
  this._destroyUI();
19702
  this.$element.removeData('Parsley');
19703
- this.$element.removeData('ParsleyFieldMultiple');
19704
  this._trigger('destroy');
19705
  },
19706
 
@@ -19782,13 +19824,13 @@ webpackJsonp([2],[
19782
  if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
19783
 
19784
  // range
19785
- if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('min') && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('range', [this.$element.attr('min'), this.$element.attr('max')], undefined, true);
19786
 
19787
  // HTML5 min
19788
- else if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('min')) this.addConstraint('min', this.$element.attr('min'), undefined, true);
19789
 
19790
  // HTML5 max
19791
- else if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('max', this.$element.attr('max'), undefined, true);
19792
 
19793
  // length
19794
  if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
@@ -19811,7 +19853,7 @@ webpackJsonp([2],[
19811
  base: this.$element.attr('min') || this.$element.attr('value')
19812
  }], undefined, true);
19813
  // Regular other HTML5 supported types
19814
- } else if (/^(email|url|range)$/i.test(type)) {
19815
  return this.addConstraint('type', type, undefined, true);
19816
  }
19817
  return this;
@@ -19836,15 +19878,20 @@ webpackJsonp([2],[
19836
  // Use `data-parsley-whitespace="squish"` to auto squish input value
19837
  // Use `data-parsley-whitespace="trim"` to auto trim input value
19838
  _handleWhitespace: function _handleWhitespace(value) {
19839
- if (true === this.options.trimValue) ParsleyUtils__default.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"');
19840
 
19841
  if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
19842
 
19843
- if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = ParsleyUtils__default.trimString(value);
19844
 
19845
  return value;
19846
  },
19847
 
 
 
 
 
 
19848
  // Internal only.
19849
  // Returns the constraints, grouped by descending priority.
19850
  // The result is thus an array of arrays of constraints.
@@ -19870,13 +19917,13 @@ webpackJsonp([2],[
19870
 
19871
  };
19872
 
19873
- var parsley_field = ParsleyField;
19874
 
19875
- var ParsleyMultiple = function ParsleyMultiple() {
19876
- this.__class__ = 'ParsleyFieldMultiple';
19877
  };
19878
 
19879
- ParsleyMultiple.prototype = {
19880
  // Add new `$element` sibling for multiple field
19881
  addElement: function addElement($element) {
19882
  this.$elements.push($element);
@@ -19884,7 +19931,7 @@ webpackJsonp([2],[
19884
  return this;
19885
  },
19886
 
19887
- // See `ParsleyField.refreshConstraints()`
19888
  refreshConstraints: function refreshConstraints() {
19889
  var fieldConstraints;
19890
 
@@ -19906,7 +19953,7 @@ webpackJsonp([2],[
19906
  continue;
19907
  }
19908
 
19909
- fieldConstraints = this.$elements[i].data('ParsleyFieldMultiple').refreshConstraints().constraints;
19910
 
19911
  for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
19912
  }
@@ -19914,7 +19961,7 @@ webpackJsonp([2],[
19914
  return this;
19915
  },
19916
 
19917
- // See `ParsleyField.getValue()`
19918
  getValue: function getValue() {
19919
  // Value could be overriden in DOM
19920
  if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
@@ -19947,14 +19994,14 @@ webpackJsonp([2],[
19947
  }
19948
  };
19949
 
19950
- var ParsleyFactory = function ParsleyFactory(element, options, parsleyFormInstance) {
19951
  this.$element = $(element);
19952
 
19953
  // If the element has already been bound, returns its saved Parsley instance
19954
  var savedparsleyFormInstance = this.$element.data('Parsley');
19955
  if (savedparsleyFormInstance) {
19956
 
19957
- // If the saved instance has been bound without a ParsleyForm parent and there is one given in this call, add it
19958
  if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
19959
  savedparsleyFormInstance.parent = parsleyFormInstance;
19960
  savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
@@ -19970,25 +20017,25 @@ webpackJsonp([2],[
19970
  // Parsley must be instantiated with a DOM element or jQuery $element
19971
  if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
19972
 
19973
- if ('undefined' !== typeof parsleyFormInstance && 'ParsleyForm' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a ParsleyForm instance');
19974
 
19975
  this.parent = parsleyFormInstance || window.Parsley;
19976
  return this.init(options);
19977
  };
19978
 
19979
- ParsleyFactory.prototype = {
19980
  init: function init(options) {
19981
  this.__class__ = 'Parsley';
19982
- this.__version__ = '2.6.5';
19983
- this.__id__ = ParsleyUtils__default.generateID();
19984
 
19985
  // Pre-compute options
19986
  this._resetOptions(options);
19987
 
19988
- // A ParsleyForm instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute
19989
- if (this.$element.is('form') || ParsleyUtils__default.checkAttr(this.$element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm');
19990
 
19991
- // Every other element is bound as a `ParsleyField` or `ParsleyFieldMultiple`
19992
  return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
19993
  },
19994
 
@@ -20016,7 +20063,7 @@ webpackJsonp([2],[
20016
 
20017
  // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
20018
  } else if (!this.options.multiple) {
20019
- ParsleyUtils__default.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);
20020
  return this;
20021
  }
20022
 
@@ -20036,7 +20083,7 @@ webpackJsonp([2],[
20036
  parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
20037
  if ('undefined' !== typeof parsleyMultipleInstance) {
20038
 
20039
- if (!this.$element.data('ParsleyFieldMultiple')) {
20040
  parsleyMultipleInstance.addElement(this.$element);
20041
  }
20042
 
@@ -20044,35 +20091,35 @@ webpackJsonp([2],[
20044
  }
20045
  }
20046
 
20047
- // Create a secret ParsleyField instance for every multiple field. It will be stored in `data('ParsleyFieldMultiple')`
20048
- // And will be useful later to access classic `ParsleyField` stuff while being in a `ParsleyFieldMultiple` instance
20049
  this.bind('parsleyField', true);
20050
 
20051
  return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
20052
  },
20053
 
20054
- // Return proper `ParsleyForm`, `ParsleyField` or `ParsleyFieldMultiple`
20055
  bind: function bind(type, doNotStore) {
20056
  var parsleyInstance;
20057
 
20058
  switch (type) {
20059
  case 'parsleyForm':
20060
- parsleyInstance = $.extend(new ParsleyForm(this.$element, this.domOptions, this.options), new ParsleyAbstract(), window.ParsleyExtend)._bindFields();
20061
  break;
20062
  case 'parsleyField':
20063
- parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new ParsleyAbstract(), window.ParsleyExtend);
20064
  break;
20065
  case 'parsleyFieldMultiple':
20066
- parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new ParsleyMultiple(), new ParsleyAbstract(), window.ParsleyExtend)._init();
20067
  break;
20068
  default:
20069
  throw new Error(type + 'is not a supported Parsley type');
20070
  }
20071
 
20072
- if (this.options.multiple) ParsleyUtils__default.setAttr(this.$element, this.options.namespace, 'multiple', this.options.multiple);
20073
 
20074
  if ('undefined' !== typeof doNotStore) {
20075
- this.$element.data('ParsleyFieldMultiple', parsleyInstance);
20076
 
20077
  return parsleyInstance;
20078
  }
@@ -20080,7 +20127,7 @@ webpackJsonp([2],[
20080
  // Store the freshly bound instance in a DOM element for later access using jQuery `data()`
20081
  this.$element.data('Parsley', parsleyInstance);
20082
 
20083
- // Tell the world we have a new ParsleyForm or ParsleyField instance!
20084
  parsleyInstance._actualizeTriggers();
20085
  parsleyInstance._trigger('init');
20086
 
@@ -20093,23 +20140,23 @@ webpackJsonp([2],[
20093
  throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
20094
  }
20095
  if (!vernums.forEach) {
20096
- ParsleyUtils__default.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');
20097
  }
20098
  // Inherit `on`, `off` & `trigger` to Parsley:
20099
- var Parsley = $.extend(new ParsleyAbstract(), {
20100
  $element: $(document),
20101
  actualizeOptions: null,
20102
  _resetOptions: null,
20103
- Factory: ParsleyFactory,
20104
- version: '2.6.5'
20105
  });
20106
 
20107
- // Supplement ParsleyField and Form with ParsleyAbstract
20108
  // This way, the constructors will have access to those methods
20109
- $.extend(parsley_field.prototype, ParsleyUI.Field, ParsleyAbstract.prototype);
20110
- $.extend(ParsleyForm.prototype, ParsleyUI.Form, ParsleyAbstract.prototype);
20111
  // Inherit actualizeOptions and _resetOptions:
20112
- $.extend(ParsleyFactory.prototype, ParsleyAbstract.prototype);
20113
 
20114
  // ### jQuery API
20115
  // `$('.elem').parsley(options)` or `$('.elem').psly(options)`
@@ -20126,58 +20173,67 @@ webpackJsonp([2],[
20126
 
20127
  // Return undefined if applied to non existing DOM element
20128
  if (!$(this).length) {
20129
- ParsleyUtils__default.warn('You must bind Parsley on an existing element.');
20130
 
20131
  return;
20132
  }
20133
 
20134
- return new ParsleyFactory(this, options);
20135
  };
20136
 
20137
- // ### ParsleyField and ParsleyForm extension
20138
  // Ensure the extension is now defined if it wasn't previously
20139
  if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
20140
 
20141
  // ### Parsley config
20142
  // Inherit from ParsleyDefault, and copy over any existing values
20143
- Parsley.options = $.extend(ParsleyUtils__default.objectCreate(ParsleyDefaults), window.ParsleyConfig);
20144
  window.ParsleyConfig = Parsley.options; // Old way of accessing global options
20145
 
20146
  // ### Globals
20147
  window.Parsley = window.psly = Parsley;
20148
- window.ParsleyUtils = ParsleyUtils__default;
 
 
 
 
 
 
 
 
 
20149
 
20150
  // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
20151
- var registry = window.Parsley._validatorRegistry = new ParsleyValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);
20152
  window.ParsleyValidator = {};
20153
  $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
20154
  window.Parsley[method] = $.proxy(registry, method);
20155
  window.ParsleyValidator[method] = function () {
20156
  var _window$Parsley;
20157
 
20158
- ParsleyUtils__default.warnOnce('Accessing the method \'' + method + '\' through ParsleyValidator is deprecated. Simply call \'window.Parsley.' + method + '(...)\'');
20159
  return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
20160
  };
20161
  });
20162
 
20163
- // ### ParsleyUI
20164
  // Deprecated global object
20165
- window.Parsley.UI = ParsleyUI;
20166
  window.ParsleyUI = {
20167
  removeError: function removeError(instance, name, doNotUpdateClass) {
20168
  var updateClass = true !== doNotUpdateClass;
20169
- ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \'removeError\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
20170
  return instance.removeError(name, { updateClass: updateClass });
20171
  },
20172
  getErrorsMessages: function getErrorsMessages(instance) {
20173
- ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \'getErrorsMessages\' on the instance directly.');
20174
  return instance.getErrorsMessages();
20175
  }
20176
  };
20177
  $.each('addError updateError'.split(' '), function (i, method) {
20178
  window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
20179
  var updateClass = true !== doNotUpdateClass;
20180
- ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \'' + method + '\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
20181
  return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
20182
  };
20183
  });
@@ -20193,7 +20249,7 @@ webpackJsonp([2],[
20193
 
20194
  var o = $({});
20195
  var deprecated = function deprecated() {
20196
- ParsleyUtils__default.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley");
20197
  };
20198
 
20199
  // Returns an event handler that calls `fn` with the arguments it expects
@@ -20232,7 +20288,7 @@ webpackJsonp([2],[
20232
 
20233
  $.listenTo = function (instance, name, fn) {
20234
  deprecated();
20235
- if (!(instance instanceof parsley_field) && !(instance instanceof ParsleyForm)) throw new Error('Must give Parsley instance');
20236
 
20237
  if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
20238
 
@@ -20247,7 +20303,7 @@ webpackJsonp([2],[
20247
 
20248
  $.unsubscribeTo = function (instance, name) {
20249
  deprecated();
20250
- if (!(instance instanceof parsley_field) && !(instance instanceof ParsleyForm)) throw new Error('Must give Parsley instance');
20251
  instance.off(eventName(name));
20252
  };
20253
 
@@ -20267,7 +20323,7 @@ webpackJsonp([2],[
20267
  var _instance;
20268
 
20269
  deprecated();
20270
- var instanceGiven = instance instanceof parsley_field || instance instanceof ParsleyForm;
20271
  var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
20272
  args.unshift(eventName(name));
20273
  if (!instanceGiven) {
@@ -20375,7 +20431,7 @@ webpackJsonp([2],[
20375
  });
20376
 
20377
  window.ParsleyExtend.addAsyncValidator = function () {
20378
- ParsleyUtils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');
20379
  return Parsley.addAsyncValidator.apply(Parsley, arguments);
20380
  };
20381
 
18093
 
18094
  /* WEBPACK VAR INJECTION */(function(global) {/*!
18095
  * Parsley.js
18096
+ * Version 2.7.0 - built Wed, Mar 1st 2017, 3:53 pm
18097
  * http://parsleyjs.org
18098
  * Guillaume Potier - <guillaume@wisembly.com>
18099
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
18105
  //
18106
  var _slice = Array.prototype.slice;
18107
 
18108
+ var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
18109
+
18110
  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
18111
 
18112
  (function (global, factory) {
18117
  var globalID = 1;
18118
  var pastWarnings = {};
18119
 
18120
+ var Utils__Utils = {
18121
  // Parsley DOM-API
18122
  // returns object from dom attributes and values
18123
  attr: function attr($element, namespace, obj) {
18204
  return string.replace(/^\s+|\s+$/g, '');
18205
  },
18206
 
18207
+ parse: {
18208
+ date: function date(string) {
18209
+ var parsed = string.match(/^(\d{4,})-(\d\d)-(\d\d)$/);
18210
+ if (!parsed) return null;
18211
+
18212
+ var _parsed$map = parsed.map(function (x) {
18213
+ return parseInt(x, 10);
18214
+ });
18215
+
18216
+ var _parsed$map2 = _slicedToArray(_parsed$map, 4);
18217
+
18218
+ var _ = _parsed$map2[0];
18219
+ var year = _parsed$map2[1];
18220
+ var month = _parsed$map2[2];
18221
+ var day = _parsed$map2[3];
18222
+
18223
+ var date = new Date(year, month - 1, day);
18224
+ if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) return null;
18225
+ return date;
18226
+ },
18227
+ string: function string(_string) {
18228
+ return _string;
18229
+ },
18230
+ integer: function integer(string) {
18231
+ if (isNaN(string)) return null;
18232
+ return parseInt(string, 10);
18233
+ },
18234
+ number: function number(string) {
18235
+ if (isNaN(string)) throw null;
18236
+ return parseFloat(string);
18237
+ },
18238
+ 'boolean': function _boolean(string) {
18239
+ return !/^\s*false\s*$/i.test(string);
18240
+ },
18241
+ object: function object(string) {
18242
+ return Utils__Utils.deserializeValue(string);
18243
+ },
18244
+ regexp: function regexp(_regexp) {
18245
+ var flags = '';
18246
+
18247
+ // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
18248
+ if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
18249
+ // Replace the regexp literal string with the first match group: ([gimy]*)
18250
+ // If no flag is present, this will be a blank string
18251
+ flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
18252
+ // Again, replace the regexp literal string with the first match group:
18253
+ // everything excluding the opening and closing slashes and the flags
18254
+ _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
18255
+ } else {
18256
+ // Anchor regexp:
18257
+ _regexp = '^' + _regexp + '$';
18258
+ }
18259
+ return new RegExp(_regexp, flags);
18260
+ }
18261
+ },
18262
+
18263
+ parseRequirement: function parseRequirement(requirementType, string) {
18264
+ var converter = this.parse[requirementType || 'string'];
18265
+ if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
18266
+ var converted = converter(string);
18267
+ if (converted === null) throw 'Requirement is not a ' + requirementType + ': "' + string + '"';
18268
+ return converted;
18269
+ },
18270
+
18271
  namespaceEvents: function namespaceEvents(events, namespace) {
18272
  events = this.trimString(events || '').split(/\s+/);
18273
  if (!events[0]) return '';
18311
  _SubmitSelector: 'input[type="submit"], button:submit'
18312
  };
18313
 
18314
+ var Utils__default = Utils__Utils;
18315
 
18316
  // All these options could be overriden and specified directly in DOM using
18317
  // `data-parsley-` default DOM-API
18318
  // eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
18319
  // eg: `data-parsley-stop-on-first-failing-constraint="false"`
18320
 
18321
+ var Defaults = {
18322
  // ### General
18323
 
18324
  // Default data-namespace for DOM API
18365
 
18366
  // Return the `$element` that will receive these above success or error classes
18367
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
18368
+ classHandler: function classHandler(Field) {},
18369
 
18370
  // Return the `$element` where errors will be appended
18371
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
18372
+ errorsContainer: function errorsContainer(Field) {},
18373
 
18374
  // ul elem that would receive errors' list
18375
  errorsWrapper: '<ul class="parsley-errors-list"></ul>',
18378
  errorTemplate: '<li></li>'
18379
  };
18380
 
18381
+ var Base = function Base() {
18382
+ this.__id__ = Utils__default.generateID();
18383
  };
18384
 
18385
+ Base.prototype = {
18386
  asyncSupport: true, // Deprecated
18387
 
18388
  _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
18397
  },
18398
 
18399
  actualizeOptions: function actualizeOptions() {
18400
+ Utils__default.attr(this.$element, this.options.namespace, this.domOptions);
18401
  if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
18402
  return this;
18403
  },
18404
 
18405
  _resetOptions: function _resetOptions(initOptions) {
18406
+ this.domOptions = Utils__default.objectCreate(this.parent.options);
18407
+ this.options = Utils__default.objectCreate(this.domOptions);
18408
  // Shallow copy of ownProperties of initOptions:
18409
  for (var i in initOptions) {
18410
  if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
18470
  },
18471
 
18472
  asyncIsValid: function asyncIsValid(group, force) {
18473
+ Utils__default.warnOnce("asyncIsValid is deprecated; please use whenValid instead");
18474
  return this.whenValid({ group: group, force: force });
18475
  },
18476
 
18479
  }
18480
  };
18481
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18482
  var convertArrayRequirement = function convertArrayRequirement(string, length) {
18483
  var m = string.match(/^\s*\[(.*)\]\s*$/);
18484
  if (!m) throw 'Requirement is not an array: "' + string + '"';
18485
+ var values = m[1].split(',').map(Utils__default.trimString);
18486
  if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
18487
  return values;
18488
  };
18489
 
 
 
 
 
 
 
18490
  var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
18491
  var main = null;
18492
  var extra = {};
18493
  for (var key in requirementSpec) {
18494
  if (key) {
18495
  var value = extraOptionReader(key);
18496
+ if ('string' === typeof value) value = Utils__default.parseRequirement(requirementSpec[key], value);
18497
  extra[key] = value;
18498
  } else {
18499
+ main = Utils__default.parseRequirement(requirementSpec[key], string);
18500
  }
18501
  }
18502
  return [main, extra];
18504
 
18505
  // A Validator needs to implement the methods `validate` and `parseRequirements`
18506
 
18507
+ var Validator = function Validator(spec) {
18508
  $.extend(true, this, spec);
18509
  };
18510
 
18511
+ Validator.prototype = {
18512
  // Returns `true` iff the given `value` is valid according the given requirements.
18513
  validate: function validate(value, requirementFirstArg) {
18514
  if (this.fn) {
18523
  if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
18524
  return this.validateMultiple.apply(this, arguments);
18525
  } else {
18526
+ var instance = arguments[arguments.length - 1];
18527
+ if (this.validateDate && instance._isDateInput()) {
18528
+ arguments[0] = Utils__default.parse.date(arguments[0]);
18529
+ if (arguments[0] === null) return false;
18530
+ return this.validateDate.apply(this, arguments);
18531
+ }
18532
  if (this.validateNumber) {
18533
  if (isNaN(value)) return false;
18534
  arguments[0] = parseFloat(arguments[0]);
18552
  var type = this.requirementType;
18553
  if ($.isArray(type)) {
18554
  var values = convertArrayRequirement(requirements, type.length);
18555
+ for (var i = 0; i < values.length; i++) values[i] = Utils__default.parseRequirement(type[i], values[i]);
18556
  return values;
18557
  } else if ($.isPlainObject(type)) {
18558
  return convertExtraOptionRequirement(type, requirements, extraOptionReader);
18559
  } else {
18560
+ return [Utils__default.parseRequirement(type, requirements)];
18561
  }
18562
  },
18563
  // Defaults:
18567
 
18568
  };
18569
 
18570
+ var ValidatorRegistry = function ValidatorRegistry(validators, catalog) {
18571
+ this.__class__ = 'ValidatorRegistry';
18572
 
18573
  // Default Parsley locale is en
18574
  this.locale = 'en';
18576
  this.init(validators || {}, catalog || {});
18577
  };
18578
 
18579
+ var typeTesters = {
18580
  email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
18581
 
18582
  // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
18588
 
18589
  alphanum: /^\w+$/i,
18590
 
18591
+ date: {
18592
+ test: function test(value) {
18593
+ return Utils__default.parse.date(value) !== null;
18594
+ }
18595
+ },
18596
+
18597
  url: new RegExp("^" +
18598
  // protocol identifier
18599
  "(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
18621
  // resource path
18622
  "(?:/\\S*)?" + "$", 'i')
18623
  };
18624
+ typeTesters.range = typeTesters.number;
18625
 
18626
  // See http://stackoverflow.com/a/10454560/8279
18627
  var decimalPlaces = function decimalPlaces(num) {
18636
  match[2] ? +match[2] : 0));
18637
  };
18638
 
18639
+ // parseArguments('number', ['1', '2']) => [1, 2]
18640
+ var ValidatorRegistry__parseArguments = function ValidatorRegistry__parseArguments(type, args) {
18641
+ return args.map(Utils__default.parse[type]);
18642
+ };
18643
+ // operatorToValidator returns a validating function for an operator function, applied to the given type
18644
+ var ValidatorRegistry__operatorToValidator = function ValidatorRegistry__operatorToValidator(type, operator) {
18645
+ return function (value) {
18646
+ for (var _len = arguments.length, requirementsAndInput = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
18647
+ requirementsAndInput[_key - 1] = arguments[_key];
18648
+ }
18649
+
18650
+ requirementsAndInput.pop(); // Get rid of `input` argument
18651
+ return operator.apply(undefined, [value].concat(_toConsumableArray(ValidatorRegistry__parseArguments(type, requirementsAndInput))));
18652
+ };
18653
+ };
18654
+
18655
+ var ValidatorRegistry__comparisonOperator = function ValidatorRegistry__comparisonOperator(operator) {
18656
+ return {
18657
+ validateDate: ValidatorRegistry__operatorToValidator('date', operator),
18658
+ validateNumber: ValidatorRegistry__operatorToValidator('number', operator),
18659
+ requirementType: operator.length <= 2 ? 'string' : ['string', 'string'], // Support operators with a 1 or 2 requirement(s)
18660
+ priority: 30
18661
+ };
18662
+ };
18663
+
18664
+ ValidatorRegistry.prototype = {
18665
  init: function init(validators, catalog) {
18666
  this.catalog = catalog;
18667
  // Copy prototype's validators:
18721
  // Old API was addValidator(name, function, priority)
18722
  //
18723
  addValidator: function addValidator(name, arg1, arg2) {
18724
+ if (this.validators[name]) Utils__default.warn('Validator "' + name + '" is already defined.');else if (Defaults.hasOwnProperty(name)) {
18725
+ Utils__default.warn('"' + name + '" is a restricted keyword and is not a valid validator name.');
18726
  return;
18727
  }
18728
  return this._setValidator.apply(this, arguments);
18730
 
18731
  updateValidator: function updateValidator(name, arg1, arg2) {
18732
  if (!this.validators[name]) {
18733
+ Utils__default.warn('Validator "' + name + '" is not already defined.');
18734
  return this.addValidator.apply(this, arguments);
18735
  }
18736
  return this._setValidator.apply(this, arguments);
18737
  },
18738
 
18739
  removeValidator: function removeValidator(name) {
18740
+ if (!this.validators[name]) Utils__default.warn('Validator "' + name + '" is not defined.');
18741
 
18742
  delete this.validators[name];
18743
 
18753
  };
18754
  }
18755
  if (!validator.validate) {
18756
+ validator = new Validator(validator);
18757
  }
18758
  this.validators[name] = validator;
18759
 
18819
  var _ref$base = _ref.base;
18820
  var base = _ref$base === undefined ? 0 : _ref$base;
18821
 
18822
+ var tester = typeTesters[type];
18823
+ if (!tester) {
18824
  throw new Error('validator type `' + type + '` is not supported');
18825
  }
18826
+ if (!tester.test(value)) return false;
18827
  if ('number' === type) {
18828
  if (!/^any$/i.test(step || '')) {
18829
  var nb = Number(value);
18895
  requirementType: ['integer', 'integer'],
18896
  priority: 30
18897
  },
18898
+ min: ValidatorRegistry__comparisonOperator(function (value, requirement) {
18899
+ return value >= requirement;
18900
+ }),
18901
+ max: ValidatorRegistry__comparisonOperator(function (value, requirement) {
18902
+ return value <= requirement;
18903
+ }),
18904
+ range: ValidatorRegistry__comparisonOperator(function (value, min, max) {
18905
+ return value >= min && value <= max;
18906
+ }),
 
 
 
 
 
 
 
 
 
 
 
 
18907
  equalto: {
18908
  validateString: function validateString(value, refOrValue) {
18909
  var $reference = $(refOrValue);
18914
  }
18915
  };
18916
 
18917
+ var UI = {};
18918
 
18919
  var diffResults = function diffResults(newResult, oldResult, deep) {
18920
  var added = [];
18938
  };
18939
  };
18940
 
18941
+ UI.Form = {
18942
 
18943
  _actualizeTriggers: function _actualizeTriggers() {
18944
  var _this2 = this;
18946
  this.$element.on('submit.Parsley', function (evt) {
18947
  _this2.onSubmitValidate(evt);
18948
  });
18949
+ this.$element.on('click.Parsley', Utils__default._SubmitSelector, function (evt) {
18950
  _this2.onSubmitButton(evt);
18951
  });
18952
 
18981
 
18982
  };
18983
 
18984
+ UI.Field = {
18985
 
18986
  _reflowUI: function _reflowUI() {
18987
  this._buildUI();
19177
  if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
19178
 
19179
  if ('string' === typeof this.options.errorsContainer) {
19180
+ if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else Utils__default.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM');
19181
  } else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
19182
 
19183
  if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
19193
 
19194
  // Remove Parsley events already bound on this field
19195
  $toBind.off('.Parsley');
19196
+ if (this._failedOnce) $toBind.on(Utils__default.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {
19197
  _this3._validateIfNeeded();
19198
+ });else if (trigger = Utils__default.namespaceEvents(this.options.trigger, 'Parsley')) {
19199
  $toBind.on(trigger, function (event) {
19200
  _this3._validateIfNeeded(event);
19201
  });
19258
  }
19259
  };
19260
 
19261
+ var Form = function Form(element, domOptions, options) {
19262
+ this.__class__ = 'Form';
19263
 
19264
  this.$element = $(element);
19265
  this.domOptions = domOptions;
19270
  this.validationResult = null;
19271
  };
19272
 
19273
+ var Form__statusMapping = { pending: null, resolved: true, rejected: false };
19274
 
19275
+ Form.prototype = {
19276
  onSubmitValidate: function onSubmitValidate(event) {
19277
  var _this5 = this;
19278
 
19280
  if (true === event.parsley) return;
19281
 
19282
  // If we didn't come here through a submit button, use the first one in the form
19283
+ var $submitSource = this._$submitSource || this.$element.find(Utils__default._SubmitSelector).first();
19284
  this._$submitSource = null;
19285
  this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
19286
  if ($submitSource.is('[formnovalidate]')) return;
19328
  // Consider using `whenValidate` instead.
19329
  validate: function validate(options) {
19330
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19331
+ Utils__default.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');
19332
 
19333
  var _arguments = _slice.call(arguments);
19334
 
19338
 
19339
  options = { group: group, force: force, event: event };
19340
  }
19341
+ return Form__statusMapping[this.whenValidate(options).state()];
19342
  },
19343
 
19344
  whenValidate: function whenValidate() {
19345
+ var _Utils__default$all$done$fail$always,
19346
  _this6 = this;
19347
 
19348
  var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
19354
  this.submitEvent = event;
19355
  if (event) {
19356
  this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
19357
+ Utils__default.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`");
19358
  _this6.validationResult = false;
19359
  } });
19360
  }
19372
  });
19373
  });
19374
 
19375
+ return (_Utils__default$all$done$fail$always = Utils__default.all(promises).done(function () {
19376
  _this6._trigger('success');
19377
  }).fail(function () {
19378
  _this6.validationResult = false;
19380
  _this6._trigger('error');
19381
  }).always(function () {
19382
  _this6._trigger('validated');
19383
+ })).pipe.apply(_Utils__default$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));
19384
  },
19385
 
19386
  // Iterate over refreshed fields, and stop on first failure.
19389
  // Prefer using `whenValid` instead.
19390
  isValid: function isValid(options) {
19391
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19392
+ Utils__default.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');
19393
 
19394
  var _arguments2 = _slice.call(arguments);
19395
 
19398
 
19399
  options = { group: group, force: force };
19400
  }
19401
+ return Form__statusMapping[this.whenValid(options).state()];
19402
  },
19403
 
19404
  // Iterate over refreshed fields and validate them.
19419
  return field.whenValid({ group: group, force: force });
19420
  });
19421
  });
19422
+ return Utils__default.all(promises);
19423
  },
19424
 
19425
  // Reset UI
19458
  _this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
19459
  var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
19460
 
19461
+ // Only add valid and not excluded `Field` and `FieldMultiple` children
19462
+ if (('Field' === fieldInstance.__class__ || 'FieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) {
19463
  var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
19464
  if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
19465
  _this8.fieldsMappedById[uniqueId] = fieldInstance;
19468
  }
19469
  });
19470
 
19471
+ $.each(Utils__default.difference(oldFields, _this8.fields), function (_, field) {
19472
  field.reset();
19473
  });
19474
  });
19503
 
19504
  var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
19505
  var validatorSpec = window.Parsley._validatorRegistry.validators[name];
19506
+ var validator = new Validator(validatorSpec);
19507
 
19508
  $.extend(this, {
19509
  validator: validator,
19536
  }
19537
  };
19538
 
19539
+ var Field = function Field(field, domOptions, options, parsleyFormInstance) {
19540
+ this.__class__ = 'Field';
19541
 
19542
  this.$element = $(field);
19543
 
19560
 
19561
  var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
19562
 
19563
+ Field.prototype = {
19564
  // # Public API
19565
+ // Validate field and trigger some events for mainly `UI`
19566
  // @returns `true`, an array of the validators that failed, or
19567
  // `null` if validation is not finished. Prefer using whenValidate
19568
  validate: function validate(options) {
19569
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19570
+ Utils__default.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');
19571
  options = { options: options };
19572
  }
19573
  var promise = this.whenValidate(options);
19583
  }
19584
  },
19585
 
19586
+ // Validate field and trigger some events for mainly `UI`
19587
  // @returns a promise that succeeds only when all validations do
19588
  // or `undefined` if field is not in the given `group`.
19589
  whenValidate: function whenValidate() {
19641
  // See also `whenValid`.
19642
  isValid: function isValid(options) {
19643
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
19644
+ Utils__default.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');
19645
 
19646
  var _arguments3 = _slice.call(arguments);
19647
 
19692
  $.each(groupedConstraints, function (_, constraints) {
19693
  // Process one group of constraints at a time, we validate the constraints
19694
  // and combine the promises together.
19695
+ var promise = Utils__default.all($.map(constraints, function (constraint) {
19696
  return _this11._validateConstraint(value, constraint);
19697
  }));
19698
  promises.push(promise);
19699
  if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
19700
  });
19701
+ return Utils__default.all(promises);
19702
  },
19703
 
19704
  // @returns a promise
19709
  // Map false to a failed promise
19710
  if (false === result) result = $.Deferred().reject();
19711
  // Make sure we return a promise and that we record failures
19712
+ return Utils__default.all([result]).fail(function (errorMessage) {
19713
  if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
19714
  _this12.validationResult.push({
19715
  assert: constraint,
19742
  // Field case: emit destroy event to clean UI and then destroy stored instance
19743
  this._destroyUI();
19744
  this.$element.removeData('Parsley');
19745
+ this.$element.removeData('FieldMultiple');
19746
  this._trigger('destroy');
19747
  },
19748
 
19824
  if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
19825
 
19826
  // range
19827
+ if ('undefined' !== typeof this.$element.attr('min') && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('range', [this.$element.attr('min'), this.$element.attr('max')], undefined, true);
19828
 
19829
  // HTML5 min
19830
+ else if ('undefined' !== typeof this.$element.attr('min')) this.addConstraint('min', this.$element.attr('min'), undefined, true);
19831
 
19832
  // HTML5 max
19833
+ else if ('undefined' !== typeof this.$element.attr('max')) this.addConstraint('max', this.$element.attr('max'), undefined, true);
19834
 
19835
  // length
19836
  if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
19853
  base: this.$element.attr('min') || this.$element.attr('value')
19854
  }], undefined, true);
19855
  // Regular other HTML5 supported types
19856
+ } else if (/^(email|url|range|date)$/i.test(type)) {
19857
  return this.addConstraint('type', type, undefined, true);
19858
  }
19859
  return this;
19878
  // Use `data-parsley-whitespace="squish"` to auto squish input value
19879
  // Use `data-parsley-whitespace="trim"` to auto trim input value
19880
  _handleWhitespace: function _handleWhitespace(value) {
19881
+ if (true === this.options.trimValue) Utils__default.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"');
19882
 
19883
  if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
19884
 
19885
+ if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = Utils__default.trimString(value);
19886
 
19887
  return value;
19888
  },
19889
 
19890
+ _isDateInput: function _isDateInput() {
19891
+ var c = this.constraintsByName.type;
19892
+ return c && c.requirements === 'date';
19893
+ },
19894
+
19895
  // Internal only.
19896
  // Returns the constraints, grouped by descending priority.
19897
  // The result is thus an array of arrays of constraints.
19917
 
19918
  };
19919
 
19920
+ var parsley_field = Field;
19921
 
19922
+ var Multiple = function Multiple() {
19923
+ this.__class__ = 'FieldMultiple';
19924
  };
19925
 
19926
+ Multiple.prototype = {
19927
  // Add new `$element` sibling for multiple field
19928
  addElement: function addElement($element) {
19929
  this.$elements.push($element);
19931
  return this;
19932
  },
19933
 
19934
+ // See `Field.refreshConstraints()`
19935
  refreshConstraints: function refreshConstraints() {
19936
  var fieldConstraints;
19937
 
19953
  continue;
19954
  }
19955
 
19956
+ fieldConstraints = this.$elements[i].data('FieldMultiple').refreshConstraints().constraints;
19957
 
19958
  for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
19959
  }
19961
  return this;
19962
  },
19963
 
19964
+ // See `Field.getValue()`
19965
  getValue: function getValue() {
19966
  // Value could be overriden in DOM
19967
  if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
19994
  }
19995
  };
19996
 
19997
+ var Factory = function Factory(element, options, parsleyFormInstance) {
19998
  this.$element = $(element);
19999
 
20000
  // If the element has already been bound, returns its saved Parsley instance
20001
  var savedparsleyFormInstance = this.$element.data('Parsley');
20002
  if (savedparsleyFormInstance) {
20003
 
20004
+ // If the saved instance has been bound without a Form parent and there is one given in this call, add it
20005
  if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
20006
  savedparsleyFormInstance.parent = parsleyFormInstance;
20007
  savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
20017
  // Parsley must be instantiated with a DOM element or jQuery $element
20018
  if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
20019
 
20020
+ if ('undefined' !== typeof parsleyFormInstance && 'Form' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a Form instance');
20021
 
20022
  this.parent = parsleyFormInstance || window.Parsley;
20023
  return this.init(options);
20024
  };
20025
 
20026
+ Factory.prototype = {
20027
  init: function init(options) {
20028
  this.__class__ = 'Parsley';
20029
+ this.__version__ = '2.7.0';
20030
+ this.__id__ = Utils__default.generateID();
20031
 
20032
  // Pre-compute options
20033
  this._resetOptions(options);
20034
 
20035
+ // A Form instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute
20036
+ if (this.$element.is('form') || Utils__default.checkAttr(this.$element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm');
20037
 
20038
+ // Every other element is bound as a `Field` or `FieldMultiple`
20039
  return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
20040
  },
20041
 
20063
 
20064
  // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
20065
  } else if (!this.options.multiple) {
20066
+ Utils__default.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);
20067
  return this;
20068
  }
20069
 
20083
  parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
20084
  if ('undefined' !== typeof parsleyMultipleInstance) {
20085
 
20086
+ if (!this.$element.data('FieldMultiple')) {
20087
  parsleyMultipleInstance.addElement(this.$element);
20088
  }
20089
 
20091
  }
20092
  }
20093
 
20094
+ // Create a secret Field instance for every multiple field. It will be stored in `data('FieldMultiple')`
20095
+ // And will be useful later to access classic `Field` stuff while being in a `FieldMultiple` instance
20096
  this.bind('parsleyField', true);
20097
 
20098
  return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
20099
  },
20100
 
20101
+ // Return proper `Form`, `Field` or `FieldMultiple`
20102
  bind: function bind(type, doNotStore) {
20103
  var parsleyInstance;
20104
 
20105
  switch (type) {
20106
  case 'parsleyForm':
20107
+ parsleyInstance = $.extend(new Form(this.$element, this.domOptions, this.options), new Base(), window.ParsleyExtend)._bindFields();
20108
  break;
20109
  case 'parsleyField':
20110
+ parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Base(), window.ParsleyExtend);
20111
  break;
20112
  case 'parsleyFieldMultiple':
20113
+ parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Multiple(), new Base(), window.ParsleyExtend)._init();
20114
  break;
20115
  default:
20116
  throw new Error(type + 'is not a supported Parsley type');
20117
  }
20118
 
20119
+ if (this.options.multiple) Utils__default.setAttr(this.$element, this.options.namespace, 'multiple', this.options.multiple);
20120
 
20121
  if ('undefined' !== typeof doNotStore) {
20122
+ this.$element.data('FieldMultiple', parsleyInstance);
20123
 
20124
  return parsleyInstance;
20125
  }
20127
  // Store the freshly bound instance in a DOM element for later access using jQuery `data()`
20128
  this.$element.data('Parsley', parsleyInstance);
20129
 
20130
+ // Tell the world we have a new Form or Field instance!
20131
  parsleyInstance._actualizeTriggers();
20132
  parsleyInstance._trigger('init');
20133
 
20140
  throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
20141
  }
20142
  if (!vernums.forEach) {
20143
+ Utils__default.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');
20144
  }
20145
  // Inherit `on`, `off` & `trigger` to Parsley:
20146
+ var Parsley = $.extend(new Base(), {
20147
  $element: $(document),
20148
  actualizeOptions: null,
20149
  _resetOptions: null,
20150
+ Factory: Factory,
20151
+ version: '2.7.0'
20152
  });
20153
 
20154
+ // Supplement Field and Form with Base
20155
  // This way, the constructors will have access to those methods
20156
+ $.extend(parsley_field.prototype, UI.Field, Base.prototype);
20157
+ $.extend(Form.prototype, UI.Form, Base.prototype);
20158
  // Inherit actualizeOptions and _resetOptions:
20159
+ $.extend(Factory.prototype, Base.prototype);
20160
 
20161
  // ### jQuery API
20162
  // `$('.elem').parsley(options)` or `$('.elem').psly(options)`
20173
 
20174
  // Return undefined if applied to non existing DOM element
20175
  if (!$(this).length) {
20176
+ Utils__default.warn('You must bind Parsley on an existing element.');
20177
 
20178
  return;
20179
  }
20180
 
20181
+ return new Factory(this, options);
20182
  };
20183
 
20184
+ // ### Field and Form extension
20185
  // Ensure the extension is now defined if it wasn't previously
20186
  if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
20187
 
20188
  // ### Parsley config
20189
  // Inherit from ParsleyDefault, and copy over any existing values
20190
+ Parsley.options = $.extend(Utils__default.objectCreate(Defaults), window.ParsleyConfig);
20191
  window.ParsleyConfig = Parsley.options; // Old way of accessing global options
20192
 
20193
  // ### Globals
20194
  window.Parsley = window.psly = Parsley;
20195
+ Parsley.Utils = Utils__default;
20196
+ window.ParsleyUtils = {};
20197
+ $.each(Utils__default, function (key, value) {
20198
+ if ('function' === typeof value) {
20199
+ window.ParsleyUtils[key] = function () {
20200
+ Utils__default.warnOnce('Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead.');
20201
+ return Utils__default[key].apply(Utils__default, arguments);
20202
+ };
20203
+ }
20204
+ });
20205
 
20206
  // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
20207
+ var registry = window.Parsley._validatorRegistry = new ValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);
20208
  window.ParsleyValidator = {};
20209
  $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
20210
  window.Parsley[method] = $.proxy(registry, method);
20211
  window.ParsleyValidator[method] = function () {
20212
  var _window$Parsley;
20213
 
20214
+ Utils__default.warnOnce('Accessing the method \'' + method + '\' through Validator is deprecated. Simply call \'window.Parsley.' + method + '(...)\'');
20215
  return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
20216
  };
20217
  });
20218
 
20219
+ // ### UI
20220
  // Deprecated global object
20221
+ window.Parsley.UI = UI;
20222
  window.ParsleyUI = {
20223
  removeError: function removeError(instance, name, doNotUpdateClass) {
20224
  var updateClass = true !== doNotUpdateClass;
20225
+ Utils__default.warnOnce('Accessing UI is deprecated. Call \'removeError\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
20226
  return instance.removeError(name, { updateClass: updateClass });
20227
  },
20228
  getErrorsMessages: function getErrorsMessages(instance) {
20229
+ Utils__default.warnOnce('Accessing UI is deprecated. Call \'getErrorsMessages\' on the instance directly.');
20230
  return instance.getErrorsMessages();
20231
  }
20232
  };
20233
  $.each('addError updateError'.split(' '), function (i, method) {
20234
  window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
20235
  var updateClass = true !== doNotUpdateClass;
20236
+ Utils__default.warnOnce('Accessing UI is deprecated. Call \'' + method + '\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
20237
  return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
20238
  };
20239
  });
20249
 
20250
  var o = $({});
20251
  var deprecated = function deprecated() {
20252
+ Utils__default.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley");
20253
  };
20254
 
20255
  // Returns an event handler that calls `fn` with the arguments it expects
20288
 
20289
  $.listenTo = function (instance, name, fn) {
20290
  deprecated();
20291
+ if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
20292
 
20293
  if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
20294
 
20303
 
20304
  $.unsubscribeTo = function (instance, name) {
20305
  deprecated();
20306
+ if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
20307
  instance.off(eventName(name));
20308
  };
20309
 
20323
  var _instance;
20324
 
20325
  deprecated();
20326
+ var instanceGiven = instance instanceof parsley_field || instance instanceof Form;
20327
  var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
20328
  args.unshift(eventName(name));
20329
  if (!instanceGiven) {
20431
  });
20432
 
20433
  window.ParsleyExtend.addAsyncValidator = function () {
20434
+ Utils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');
20435
  return Parsley.addAsyncValidator.apply(Parsley, arguments);
20436
  };
20437
 
assets/js/public.js CHANGED
@@ -1945,7 +1945,7 @@
1945
 
1946
  /* WEBPACK VAR INJECTION */(function(global) {/*!
1947
  * Parsley.js
1948
- * Version 2.6.5 - built Fri, Feb 24th 2017, 3:50 pm
1949
  * http://parsleyjs.org
1950
  * Guillaume Potier - <guillaume@wisembly.com>
1951
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
@@ -1957,6 +1957,8 @@
1957
  //
1958
  var _slice = Array.prototype.slice;
1959
 
 
 
1960
  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
1961
 
1962
  (function (global, factory) {
@@ -1967,7 +1969,7 @@
1967
  var globalID = 1;
1968
  var pastWarnings = {};
1969
 
1970
- var ParsleyUtils__ParsleyUtils = {
1971
  // Parsley DOM-API
1972
  // returns object from dom attributes and values
1973
  attr: function attr($element, namespace, obj) {
@@ -2054,6 +2056,70 @@
2054
  return string.replace(/^\s+|\s+$/g, '');
2055
  },
2056
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2057
  namespaceEvents: function namespaceEvents(events, namespace) {
2058
  events = this.trimString(events || '').split(/\s+/);
2059
  if (!events[0]) return '';
@@ -2097,14 +2163,14 @@
2097
  _SubmitSelector: 'input[type="submit"], button:submit'
2098
  };
2099
 
2100
- var ParsleyUtils__default = ParsleyUtils__ParsleyUtils;
2101
 
2102
  // All these options could be overriden and specified directly in DOM using
2103
  // `data-parsley-` default DOM-API
2104
  // eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
2105
  // eg: `data-parsley-stop-on-first-failing-constraint="false"`
2106
 
2107
- var ParsleyDefaults = {
2108
  // ### General
2109
 
2110
  // Default data-namespace for DOM API
@@ -2151,11 +2217,11 @@
2151
 
2152
  // Return the `$element` that will receive these above success or error classes
2153
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
2154
- classHandler: function classHandler(ParsleyField) {},
2155
 
2156
  // Return the `$element` where errors will be appended
2157
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
2158
- errorsContainer: function errorsContainer(ParsleyField) {},
2159
 
2160
  // ul elem that would receive errors' list
2161
  errorsWrapper: '<ul class="parsley-errors-list"></ul>',
@@ -2164,11 +2230,11 @@
2164
  errorTemplate: '<li></li>'
2165
  };
2166
 
2167
- var ParsleyAbstract = function ParsleyAbstract() {
2168
- this.__id__ = ParsleyUtils__default.generateID();
2169
  };
2170
 
2171
- ParsleyAbstract.prototype = {
2172
  asyncSupport: true, // Deprecated
2173
 
2174
  _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
@@ -2183,14 +2249,14 @@
2183
  },
2184
 
2185
  actualizeOptions: function actualizeOptions() {
2186
- ParsleyUtils__default.attr(this.$element, this.options.namespace, this.domOptions);
2187
  if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
2188
  return this;
2189
  },
2190
 
2191
  _resetOptions: function _resetOptions(initOptions) {
2192
- this.domOptions = ParsleyUtils__default.objectCreate(this.parent.options);
2193
- this.options = ParsleyUtils__default.objectCreate(this.domOptions);
2194
  // Shallow copy of ownProperties of initOptions:
2195
  for (var i in initOptions) {
2196
  if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
@@ -2256,7 +2322,7 @@
2256
  },
2257
 
2258
  asyncIsValid: function asyncIsValid(group, force) {
2259
- ParsleyUtils__default.warnOnce("asyncIsValid is deprecated; please use whenValid instead");
2260
  return this.whenValid({ group: group, force: force });
2261
  },
2262
 
@@ -2265,73 +2331,24 @@
2265
  }
2266
  };
2267
 
2268
- var requirementConverters = {
2269
- string: function string(_string) {
2270
- return _string;
2271
- },
2272
- integer: function integer(string) {
2273
- if (isNaN(string)) throw 'Requirement is not an integer: "' + string + '"';
2274
- return parseInt(string, 10);
2275
- },
2276
- number: function number(string) {
2277
- if (isNaN(string)) throw 'Requirement is not a number: "' + string + '"';
2278
- return parseFloat(string);
2279
- },
2280
- reference: function reference(string) {
2281
- // Unused for now
2282
- var result = $(string);
2283
- if (result.length === 0) throw 'No such reference: "' + string + '"';
2284
- return result;
2285
- },
2286
- 'boolean': function _boolean(string) {
2287
- return string !== 'false';
2288
- },
2289
- object: function object(string) {
2290
- return ParsleyUtils__default.deserializeValue(string);
2291
- },
2292
- regexp: function regexp(_regexp) {
2293
- var flags = '';
2294
-
2295
- // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
2296
- if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
2297
- // Replace the regexp literal string with the first match group: ([gimy]*)
2298
- // If no flag is present, this will be a blank string
2299
- flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
2300
- // Again, replace the regexp literal string with the first match group:
2301
- // everything excluding the opening and closing slashes and the flags
2302
- _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
2303
- } else {
2304
- // Anchor regexp:
2305
- _regexp = '^' + _regexp + '$';
2306
- }
2307
- return new RegExp(_regexp, flags);
2308
- }
2309
- };
2310
-
2311
  var convertArrayRequirement = function convertArrayRequirement(string, length) {
2312
  var m = string.match(/^\s*\[(.*)\]\s*$/);
2313
  if (!m) throw 'Requirement is not an array: "' + string + '"';
2314
- var values = m[1].split(',').map(ParsleyUtils__default.trimString);
2315
  if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
2316
  return values;
2317
  };
2318
 
2319
- var convertRequirement = function convertRequirement(requirementType, string) {
2320
- var converter = requirementConverters[requirementType || 'string'];
2321
- if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
2322
- return converter(string);
2323
- };
2324
-
2325
  var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
2326
  var main = null;
2327
  var extra = {};
2328
  for (var key in requirementSpec) {
2329
  if (key) {
2330
  var value = extraOptionReader(key);
2331
- if ('string' === typeof value) value = convertRequirement(requirementSpec[key], value);
2332
  extra[key] = value;
2333
  } else {
2334
- main = convertRequirement(requirementSpec[key], string);
2335
  }
2336
  }
2337
  return [main, extra];
@@ -2339,11 +2356,11 @@
2339
 
2340
  // A Validator needs to implement the methods `validate` and `parseRequirements`
2341
 
2342
- var ParsleyValidator = function ParsleyValidator(spec) {
2343
  $.extend(true, this, spec);
2344
  };
2345
 
2346
- ParsleyValidator.prototype = {
2347
  // Returns `true` iff the given `value` is valid according the given requirements.
2348
  validate: function validate(value, requirementFirstArg) {
2349
  if (this.fn) {
@@ -2358,6 +2375,12 @@
2358
  if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
2359
  return this.validateMultiple.apply(this, arguments);
2360
  } else {
 
 
 
 
 
 
2361
  if (this.validateNumber) {
2362
  if (isNaN(value)) return false;
2363
  arguments[0] = parseFloat(arguments[0]);
@@ -2381,12 +2404,12 @@
2381
  var type = this.requirementType;
2382
  if ($.isArray(type)) {
2383
  var values = convertArrayRequirement(requirements, type.length);
2384
- for (var i = 0; i < values.length; i++) values[i] = convertRequirement(type[i], values[i]);
2385
  return values;
2386
  } else if ($.isPlainObject(type)) {
2387
  return convertExtraOptionRequirement(type, requirements, extraOptionReader);
2388
  } else {
2389
- return [convertRequirement(type, requirements)];
2390
  }
2391
  },
2392
  // Defaults:
@@ -2396,8 +2419,8 @@
2396
 
2397
  };
2398
 
2399
- var ParsleyValidatorRegistry = function ParsleyValidatorRegistry(validators, catalog) {
2400
- this.__class__ = 'ParsleyValidatorRegistry';
2401
 
2402
  // Default Parsley locale is en
2403
  this.locale = 'en';
@@ -2405,7 +2428,7 @@
2405
  this.init(validators || {}, catalog || {});
2406
  };
2407
 
2408
- var typeRegexes = {
2409
  email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
2410
 
2411
  // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
@@ -2417,6 +2440,12 @@
2417
 
2418
  alphanum: /^\w+$/i,
2419
 
 
 
 
 
 
 
2420
  url: new RegExp("^" +
2421
  // protocol identifier
2422
  "(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
@@ -2444,7 +2473,7 @@
2444
  // resource path
2445
  "(?:/\\S*)?" + "$", 'i')
2446
  };
2447
- typeRegexes.range = typeRegexes.number;
2448
 
2449
  // See http://stackoverflow.com/a/10454560/8279
2450
  var decimalPlaces = function decimalPlaces(num) {
@@ -2459,7 +2488,32 @@
2459
  match[2] ? +match[2] : 0));
2460
  };
2461
 
2462
- ParsleyValidatorRegistry.prototype = {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2463
  init: function init(validators, catalog) {
2464
  this.catalog = catalog;
2465
  // Copy prototype's validators:
@@ -2519,8 +2573,8 @@
2519
  // Old API was addValidator(name, function, priority)
2520
  //
2521
  addValidator: function addValidator(name, arg1, arg2) {
2522
- if (this.validators[name]) ParsleyUtils__default.warn('Validator "' + name + '" is already defined.');else if (ParsleyDefaults.hasOwnProperty(name)) {
2523
- ParsleyUtils__default.warn('"' + name + '" is a restricted keyword and is not a valid validator name.');
2524
  return;
2525
  }
2526
  return this._setValidator.apply(this, arguments);
@@ -2528,14 +2582,14 @@
2528
 
2529
  updateValidator: function updateValidator(name, arg1, arg2) {
2530
  if (!this.validators[name]) {
2531
- ParsleyUtils__default.warn('Validator "' + name + '" is not already defined.');
2532
  return this.addValidator.apply(this, arguments);
2533
  }
2534
  return this._setValidator.apply(this, arguments);
2535
  },
2536
 
2537
  removeValidator: function removeValidator(name) {
2538
- if (!this.validators[name]) ParsleyUtils__default.warn('Validator "' + name + '" is not defined.');
2539
 
2540
  delete this.validators[name];
2541
 
@@ -2551,7 +2605,7 @@
2551
  };
2552
  }
2553
  if (!validator.validate) {
2554
- validator = new ParsleyValidator(validator);
2555
  }
2556
  this.validators[name] = validator;
2557
 
@@ -2617,11 +2671,11 @@
2617
  var _ref$base = _ref.base;
2618
  var base = _ref$base === undefined ? 0 : _ref$base;
2619
 
2620
- var regex = typeRegexes[type];
2621
- if (!regex) {
2622
  throw new Error('validator type `' + type + '` is not supported');
2623
  }
2624
- if (!regex.test(value)) return false;
2625
  if ('number' === type) {
2626
  if (!/^any$/i.test(step || '')) {
2627
  var nb = Number(value);
@@ -2693,27 +2747,15 @@
2693
  requirementType: ['integer', 'integer'],
2694
  priority: 30
2695
  },
2696
- min: {
2697
- validateNumber: function validateNumber(value, requirement) {
2698
- return value >= requirement;
2699
- },
2700
- requirementType: 'number',
2701
- priority: 30
2702
- },
2703
- max: {
2704
- validateNumber: function validateNumber(value, requirement) {
2705
- return value <= requirement;
2706
- },
2707
- requirementType: 'number',
2708
- priority: 30
2709
- },
2710
- range: {
2711
- validateNumber: function validateNumber(value, min, max) {
2712
- return value >= min && value <= max;
2713
- },
2714
- requirementType: ['number', 'number'],
2715
- priority: 30
2716
- },
2717
  equalto: {
2718
  validateString: function validateString(value, refOrValue) {
2719
  var $reference = $(refOrValue);
@@ -2724,7 +2766,7 @@
2724
  }
2725
  };
2726
 
2727
- var ParsleyUI = {};
2728
 
2729
  var diffResults = function diffResults(newResult, oldResult, deep) {
2730
  var added = [];
@@ -2748,7 +2790,7 @@
2748
  };
2749
  };
2750
 
2751
- ParsleyUI.Form = {
2752
 
2753
  _actualizeTriggers: function _actualizeTriggers() {
2754
  var _this2 = this;
@@ -2756,7 +2798,7 @@
2756
  this.$element.on('submit.Parsley', function (evt) {
2757
  _this2.onSubmitValidate(evt);
2758
  });
2759
- this.$element.on('click.Parsley', ParsleyUtils__default._SubmitSelector, function (evt) {
2760
  _this2.onSubmitButton(evt);
2761
  });
2762
 
@@ -2791,7 +2833,7 @@
2791
 
2792
  };
2793
 
2794
- ParsleyUI.Field = {
2795
 
2796
  _reflowUI: function _reflowUI() {
2797
  this._buildUI();
@@ -2987,7 +3029,7 @@
2987
  if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
2988
 
2989
  if ('string' === typeof this.options.errorsContainer) {
2990
- if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else ParsleyUtils__default.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM');
2991
  } else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
2992
 
2993
  if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
@@ -3003,9 +3045,9 @@
3003
 
3004
  // Remove Parsley events already bound on this field
3005
  $toBind.off('.Parsley');
3006
- if (this._failedOnce) $toBind.on(ParsleyUtils__default.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {
3007
  _this3._validateIfNeeded();
3008
- });else if (trigger = ParsleyUtils__default.namespaceEvents(this.options.trigger, 'Parsley')) {
3009
  $toBind.on(trigger, function (event) {
3010
  _this3._validateIfNeeded(event);
3011
  });
@@ -3068,8 +3110,8 @@
3068
  }
3069
  };
3070
 
3071
- var ParsleyForm = function ParsleyForm(element, domOptions, options) {
3072
- this.__class__ = 'ParsleyForm';
3073
 
3074
  this.$element = $(element);
3075
  this.domOptions = domOptions;
@@ -3080,9 +3122,9 @@
3080
  this.validationResult = null;
3081
  };
3082
 
3083
- var ParsleyForm__statusMapping = { pending: null, resolved: true, rejected: false };
3084
 
3085
- ParsleyForm.prototype = {
3086
  onSubmitValidate: function onSubmitValidate(event) {
3087
  var _this5 = this;
3088
 
@@ -3090,7 +3132,7 @@
3090
  if (true === event.parsley) return;
3091
 
3092
  // If we didn't come here through a submit button, use the first one in the form
3093
- var $submitSource = this._$submitSource || this.$element.find(ParsleyUtils__default._SubmitSelector).first();
3094
  this._$submitSource = null;
3095
  this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
3096
  if ($submitSource.is('[formnovalidate]')) return;
@@ -3138,7 +3180,7 @@
3138
  // Consider using `whenValidate` instead.
3139
  validate: function validate(options) {
3140
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3141
- ParsleyUtils__default.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');
3142
 
3143
  var _arguments = _slice.call(arguments);
3144
 
@@ -3148,11 +3190,11 @@
3148
 
3149
  options = { group: group, force: force, event: event };
3150
  }
3151
- return ParsleyForm__statusMapping[this.whenValidate(options).state()];
3152
  },
3153
 
3154
  whenValidate: function whenValidate() {
3155
- var _ParsleyUtils__default$all$done$fail$always,
3156
  _this6 = this;
3157
 
3158
  var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
@@ -3164,7 +3206,7 @@
3164
  this.submitEvent = event;
3165
  if (event) {
3166
  this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
3167
- ParsleyUtils__default.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`");
3168
  _this6.validationResult = false;
3169
  } });
3170
  }
@@ -3182,7 +3224,7 @@
3182
  });
3183
  });
3184
 
3185
- return (_ParsleyUtils__default$all$done$fail$always = ParsleyUtils__default.all(promises).done(function () {
3186
  _this6._trigger('success');
3187
  }).fail(function () {
3188
  _this6.validationResult = false;
@@ -3190,7 +3232,7 @@
3190
  _this6._trigger('error');
3191
  }).always(function () {
3192
  _this6._trigger('validated');
3193
- })).pipe.apply(_ParsleyUtils__default$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));
3194
  },
3195
 
3196
  // Iterate over refreshed fields, and stop on first failure.
@@ -3199,7 +3241,7 @@
3199
  // Prefer using `whenValid` instead.
3200
  isValid: function isValid(options) {
3201
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3202
- ParsleyUtils__default.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');
3203
 
3204
  var _arguments2 = _slice.call(arguments);
3205
 
@@ -3208,7 +3250,7 @@
3208
 
3209
  options = { group: group, force: force };
3210
  }
3211
- return ParsleyForm__statusMapping[this.whenValid(options).state()];
3212
  },
3213
 
3214
  // Iterate over refreshed fields and validate them.
@@ -3229,7 +3271,7 @@
3229
  return field.whenValid({ group: group, force: force });
3230
  });
3231
  });
3232
- return ParsleyUtils__default.all(promises);
3233
  },
3234
 
3235
  // Reset UI
@@ -3268,8 +3310,8 @@
3268
  _this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
3269
  var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
3270
 
3271
- // Only add valid and not excluded `ParsleyField` and `ParsleyFieldMultiple` children
3272
- if (('ParsleyField' === fieldInstance.__class__ || 'ParsleyFieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) {
3273
  var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
3274
  if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
3275
  _this8.fieldsMappedById[uniqueId] = fieldInstance;
@@ -3278,7 +3320,7 @@
3278
  }
3279
  });
3280
 
3281
- $.each(ParsleyUtils__default.difference(oldFields, _this8.fields), function (_, field) {
3282
  field.reset();
3283
  });
3284
  });
@@ -3313,7 +3355,7 @@
3313
 
3314
  var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
3315
  var validatorSpec = window.Parsley._validatorRegistry.validators[name];
3316
- var validator = new ParsleyValidator(validatorSpec);
3317
 
3318
  $.extend(this, {
3319
  validator: validator,
@@ -3346,8 +3388,8 @@
3346
  }
3347
  };
3348
 
3349
- var ParsleyField = function ParsleyField(field, domOptions, options, parsleyFormInstance) {
3350
- this.__class__ = 'ParsleyField';
3351
 
3352
  this.$element = $(field);
3353
 
@@ -3370,14 +3412,14 @@
3370
 
3371
  var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
3372
 
3373
- ParsleyField.prototype = {
3374
  // # Public API
3375
- // Validate field and trigger some events for mainly `ParsleyUI`
3376
  // @returns `true`, an array of the validators that failed, or
3377
  // `null` if validation is not finished. Prefer using whenValidate
3378
  validate: function validate(options) {
3379
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3380
- ParsleyUtils__default.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');
3381
  options = { options: options };
3382
  }
3383
  var promise = this.whenValidate(options);
@@ -3393,7 +3435,7 @@
3393
  }
3394
  },
3395
 
3396
- // Validate field and trigger some events for mainly `ParsleyUI`
3397
  // @returns a promise that succeeds only when all validations do
3398
  // or `undefined` if field is not in the given `group`.
3399
  whenValidate: function whenValidate() {
@@ -3451,7 +3493,7 @@
3451
  // See also `whenValid`.
3452
  isValid: function isValid(options) {
3453
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3454
- ParsleyUtils__default.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');
3455
 
3456
  var _arguments3 = _slice.call(arguments);
3457
 
@@ -3502,13 +3544,13 @@
3502
  $.each(groupedConstraints, function (_, constraints) {
3503
  // Process one group of constraints at a time, we validate the constraints
3504
  // and combine the promises together.
3505
- var promise = ParsleyUtils__default.all($.map(constraints, function (constraint) {
3506
  return _this11._validateConstraint(value, constraint);
3507
  }));
3508
  promises.push(promise);
3509
  if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
3510
  });
3511
- return ParsleyUtils__default.all(promises);
3512
  },
3513
 
3514
  // @returns a promise
@@ -3519,7 +3561,7 @@
3519
  // Map false to a failed promise
3520
  if (false === result) result = $.Deferred().reject();
3521
  // Make sure we return a promise and that we record failures
3522
- return ParsleyUtils__default.all([result]).fail(function (errorMessage) {
3523
  if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
3524
  _this12.validationResult.push({
3525
  assert: constraint,
@@ -3552,7 +3594,7 @@
3552
  // Field case: emit destroy event to clean UI and then destroy stored instance
3553
  this._destroyUI();
3554
  this.$element.removeData('Parsley');
3555
- this.$element.removeData('ParsleyFieldMultiple');
3556
  this._trigger('destroy');
3557
  },
3558
 
@@ -3634,13 +3676,13 @@
3634
  if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
3635
 
3636
  // range
3637
- if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('min') && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('range', [this.$element.attr('min'), this.$element.attr('max')], undefined, true);
3638
 
3639
  // HTML5 min
3640
- else if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('min')) this.addConstraint('min', this.$element.attr('min'), undefined, true);
3641
 
3642
  // HTML5 max
3643
- else if (this.$element.attr('type') !== 'date' && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('max', this.$element.attr('max'), undefined, true);
3644
 
3645
  // length
3646
  if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
@@ -3663,7 +3705,7 @@
3663
  base: this.$element.attr('min') || this.$element.attr('value')
3664
  }], undefined, true);
3665
  // Regular other HTML5 supported types
3666
- } else if (/^(email|url|range)$/i.test(type)) {
3667
  return this.addConstraint('type', type, undefined, true);
3668
  }
3669
  return this;
@@ -3688,15 +3730,20 @@
3688
  // Use `data-parsley-whitespace="squish"` to auto squish input value
3689
  // Use `data-parsley-whitespace="trim"` to auto trim input value
3690
  _handleWhitespace: function _handleWhitespace(value) {
3691
- if (true === this.options.trimValue) ParsleyUtils__default.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"');
3692
 
3693
  if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
3694
 
3695
- if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = ParsleyUtils__default.trimString(value);
3696
 
3697
  return value;
3698
  },
3699
 
 
 
 
 
 
3700
  // Internal only.
3701
  // Returns the constraints, grouped by descending priority.
3702
  // The result is thus an array of arrays of constraints.
@@ -3722,13 +3769,13 @@
3722
 
3723
  };
3724
 
3725
- var parsley_field = ParsleyField;
3726
 
3727
- var ParsleyMultiple = function ParsleyMultiple() {
3728
- this.__class__ = 'ParsleyFieldMultiple';
3729
  };
3730
 
3731
- ParsleyMultiple.prototype = {
3732
  // Add new `$element` sibling for multiple field
3733
  addElement: function addElement($element) {
3734
  this.$elements.push($element);
@@ -3736,7 +3783,7 @@
3736
  return this;
3737
  },
3738
 
3739
- // See `ParsleyField.refreshConstraints()`
3740
  refreshConstraints: function refreshConstraints() {
3741
  var fieldConstraints;
3742
 
@@ -3758,7 +3805,7 @@
3758
  continue;
3759
  }
3760
 
3761
- fieldConstraints = this.$elements[i].data('ParsleyFieldMultiple').refreshConstraints().constraints;
3762
 
3763
  for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
3764
  }
@@ -3766,7 +3813,7 @@
3766
  return this;
3767
  },
3768
 
3769
- // See `ParsleyField.getValue()`
3770
  getValue: function getValue() {
3771
  // Value could be overriden in DOM
3772
  if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
@@ -3799,14 +3846,14 @@
3799
  }
3800
  };
3801
 
3802
- var ParsleyFactory = function ParsleyFactory(element, options, parsleyFormInstance) {
3803
  this.$element = $(element);
3804
 
3805
  // If the element has already been bound, returns its saved Parsley instance
3806
  var savedparsleyFormInstance = this.$element.data('Parsley');
3807
  if (savedparsleyFormInstance) {
3808
 
3809
- // If the saved instance has been bound without a ParsleyForm parent and there is one given in this call, add it
3810
  if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
3811
  savedparsleyFormInstance.parent = parsleyFormInstance;
3812
  savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
@@ -3822,25 +3869,25 @@
3822
  // Parsley must be instantiated with a DOM element or jQuery $element
3823
  if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
3824
 
3825
- if ('undefined' !== typeof parsleyFormInstance && 'ParsleyForm' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a ParsleyForm instance');
3826
 
3827
  this.parent = parsleyFormInstance || window.Parsley;
3828
  return this.init(options);
3829
  };
3830
 
3831
- ParsleyFactory.prototype = {
3832
  init: function init(options) {
3833
  this.__class__ = 'Parsley';
3834
- this.__version__ = '2.6.5';
3835
- this.__id__ = ParsleyUtils__default.generateID();
3836
 
3837
  // Pre-compute options
3838
  this._resetOptions(options);
3839
 
3840
- // A ParsleyForm instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute
3841
- if (this.$element.is('form') || ParsleyUtils__default.checkAttr(this.$element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm');
3842
 
3843
- // Every other element is bound as a `ParsleyField` or `ParsleyFieldMultiple`
3844
  return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
3845
  },
3846
 
@@ -3868,7 +3915,7 @@
3868
 
3869
  // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
3870
  } else if (!this.options.multiple) {
3871
- ParsleyUtils__default.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);
3872
  return this;
3873
  }
3874
 
@@ -3888,7 +3935,7 @@
3888
  parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
3889
  if ('undefined' !== typeof parsleyMultipleInstance) {
3890
 
3891
- if (!this.$element.data('ParsleyFieldMultiple')) {
3892
  parsleyMultipleInstance.addElement(this.$element);
3893
  }
3894
 
@@ -3896,35 +3943,35 @@
3896
  }
3897
  }
3898
 
3899
- // Create a secret ParsleyField instance for every multiple field. It will be stored in `data('ParsleyFieldMultiple')`
3900
- // And will be useful later to access classic `ParsleyField` stuff while being in a `ParsleyFieldMultiple` instance
3901
  this.bind('parsleyField', true);
3902
 
3903
  return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
3904
  },
3905
 
3906
- // Return proper `ParsleyForm`, `ParsleyField` or `ParsleyFieldMultiple`
3907
  bind: function bind(type, doNotStore) {
3908
  var parsleyInstance;
3909
 
3910
  switch (type) {
3911
  case 'parsleyForm':
3912
- parsleyInstance = $.extend(new ParsleyForm(this.$element, this.domOptions, this.options), new ParsleyAbstract(), window.ParsleyExtend)._bindFields();
3913
  break;
3914
  case 'parsleyField':
3915
- parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new ParsleyAbstract(), window.ParsleyExtend);
3916
  break;
3917
  case 'parsleyFieldMultiple':
3918
- parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new ParsleyMultiple(), new ParsleyAbstract(), window.ParsleyExtend)._init();
3919
  break;
3920
  default:
3921
  throw new Error(type + 'is not a supported Parsley type');
3922
  }
3923
 
3924
- if (this.options.multiple) ParsleyUtils__default.setAttr(this.$element, this.options.namespace, 'multiple', this.options.multiple);
3925
 
3926
  if ('undefined' !== typeof doNotStore) {
3927
- this.$element.data('ParsleyFieldMultiple', parsleyInstance);
3928
 
3929
  return parsleyInstance;
3930
  }
@@ -3932,7 +3979,7 @@
3932
  // Store the freshly bound instance in a DOM element for later access using jQuery `data()`
3933
  this.$element.data('Parsley', parsleyInstance);
3934
 
3935
- // Tell the world we have a new ParsleyForm or ParsleyField instance!
3936
  parsleyInstance._actualizeTriggers();
3937
  parsleyInstance._trigger('init');
3938
 
@@ -3945,23 +3992,23 @@
3945
  throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
3946
  }
3947
  if (!vernums.forEach) {
3948
- ParsleyUtils__default.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');
3949
  }
3950
  // Inherit `on`, `off` & `trigger` to Parsley:
3951
- var Parsley = $.extend(new ParsleyAbstract(), {
3952
  $element: $(document),
3953
  actualizeOptions: null,
3954
  _resetOptions: null,
3955
- Factory: ParsleyFactory,
3956
- version: '2.6.5'
3957
  });
3958
 
3959
- // Supplement ParsleyField and Form with ParsleyAbstract
3960
  // This way, the constructors will have access to those methods
3961
- $.extend(parsley_field.prototype, ParsleyUI.Field, ParsleyAbstract.prototype);
3962
- $.extend(ParsleyForm.prototype, ParsleyUI.Form, ParsleyAbstract.prototype);
3963
  // Inherit actualizeOptions and _resetOptions:
3964
- $.extend(ParsleyFactory.prototype, ParsleyAbstract.prototype);
3965
 
3966
  // ### jQuery API
3967
  // `$('.elem').parsley(options)` or `$('.elem').psly(options)`
@@ -3978,58 +4025,67 @@
3978
 
3979
  // Return undefined if applied to non existing DOM element
3980
  if (!$(this).length) {
3981
- ParsleyUtils__default.warn('You must bind Parsley on an existing element.');
3982
 
3983
  return;
3984
  }
3985
 
3986
- return new ParsleyFactory(this, options);
3987
  };
3988
 
3989
- // ### ParsleyField and ParsleyForm extension
3990
  // Ensure the extension is now defined if it wasn't previously
3991
  if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
3992
 
3993
  // ### Parsley config
3994
  // Inherit from ParsleyDefault, and copy over any existing values
3995
- Parsley.options = $.extend(ParsleyUtils__default.objectCreate(ParsleyDefaults), window.ParsleyConfig);
3996
  window.ParsleyConfig = Parsley.options; // Old way of accessing global options
3997
 
3998
  // ### Globals
3999
  window.Parsley = window.psly = Parsley;
4000
- window.ParsleyUtils = ParsleyUtils__default;
 
 
 
 
 
 
 
 
 
4001
 
4002
  // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
4003
- var registry = window.Parsley._validatorRegistry = new ParsleyValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);
4004
  window.ParsleyValidator = {};
4005
  $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
4006
  window.Parsley[method] = $.proxy(registry, method);
4007
  window.ParsleyValidator[method] = function () {
4008
  var _window$Parsley;
4009
 
4010
- ParsleyUtils__default.warnOnce('Accessing the method \'' + method + '\' through ParsleyValidator is deprecated. Simply call \'window.Parsley.' + method + '(...)\'');
4011
  return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
4012
  };
4013
  });
4014
 
4015
- // ### ParsleyUI
4016
  // Deprecated global object
4017
- window.Parsley.UI = ParsleyUI;
4018
  window.ParsleyUI = {
4019
  removeError: function removeError(instance, name, doNotUpdateClass) {
4020
  var updateClass = true !== doNotUpdateClass;
4021
- ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \'removeError\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
4022
  return instance.removeError(name, { updateClass: updateClass });
4023
  },
4024
  getErrorsMessages: function getErrorsMessages(instance) {
4025
- ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \'getErrorsMessages\' on the instance directly.');
4026
  return instance.getErrorsMessages();
4027
  }
4028
  };
4029
  $.each('addError updateError'.split(' '), function (i, method) {
4030
  window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
4031
  var updateClass = true !== doNotUpdateClass;
4032
- ParsleyUtils__default.warnOnce('Accessing ParsleyUI is deprecated. Call \'' + method + '\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
4033
  return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
4034
  };
4035
  });
@@ -4045,7 +4101,7 @@
4045
 
4046
  var o = $({});
4047
  var deprecated = function deprecated() {
4048
- ParsleyUtils__default.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley");
4049
  };
4050
 
4051
  // Returns an event handler that calls `fn` with the arguments it expects
@@ -4084,7 +4140,7 @@
4084
 
4085
  $.listenTo = function (instance, name, fn) {
4086
  deprecated();
4087
- if (!(instance instanceof parsley_field) && !(instance instanceof ParsleyForm)) throw new Error('Must give Parsley instance');
4088
 
4089
  if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
4090
 
@@ -4099,7 +4155,7 @@
4099
 
4100
  $.unsubscribeTo = function (instance, name) {
4101
  deprecated();
4102
- if (!(instance instanceof parsley_field) && !(instance instanceof ParsleyForm)) throw new Error('Must give Parsley instance');
4103
  instance.off(eventName(name));
4104
  };
4105
 
@@ -4119,7 +4175,7 @@
4119
  var _instance;
4120
 
4121
  deprecated();
4122
- var instanceGiven = instance instanceof parsley_field || instance instanceof ParsleyForm;
4123
  var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
4124
  args.unshift(eventName(name));
4125
  if (!instanceGiven) {
@@ -4227,7 +4283,7 @@
4227
  });
4228
 
4229
  window.ParsleyExtend.addAsyncValidator = function () {
4230
- ParsleyUtils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');
4231
  return Parsley.addAsyncValidator.apply(Parsley, arguments);
4232
  };
4233
 
1945
 
1946
  /* WEBPACK VAR INJECTION */(function(global) {/*!
1947
  * Parsley.js
1948
+ * Version 2.7.0 - built Wed, Mar 1st 2017, 3:53 pm
1949
  * http://parsleyjs.org
1950
  * Guillaume Potier - <guillaume@wisembly.com>
1951
  * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
1957
  //
1958
  var _slice = Array.prototype.slice;
1959
 
1960
+ var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
1961
+
1962
  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
1963
 
1964
  (function (global, factory) {
1969
  var globalID = 1;
1970
  var pastWarnings = {};
1971
 
1972
+ var Utils__Utils = {
1973
  // Parsley DOM-API
1974
  // returns object from dom attributes and values
1975
  attr: function attr($element, namespace, obj) {
2056
  return string.replace(/^\s+|\s+$/g, '');
2057
  },
2058
 
2059
+ parse: {
2060
+ date: function date(string) {
2061
+ var parsed = string.match(/^(\d{4,})-(\d\d)-(\d\d)$/);
2062
+ if (!parsed) return null;
2063
+
2064
+ var _parsed$map = parsed.map(function (x) {
2065
+ return parseInt(x, 10);
2066
+ });
2067
+
2068
+ var _parsed$map2 = _slicedToArray(_parsed$map, 4);
2069
+
2070
+ var _ = _parsed$map2[0];
2071
+ var year = _parsed$map2[1];
2072
+ var month = _parsed$map2[2];
2073
+ var day = _parsed$map2[3];
2074
+
2075
+ var date = new Date(year, month - 1, day);
2076
+ if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) return null;
2077
+ return date;
2078
+ },
2079
+ string: function string(_string) {
2080
+ return _string;
2081
+ },
2082
+ integer: function integer(string) {
2083
+ if (isNaN(string)) return null;
2084
+ return parseInt(string, 10);
2085
+ },
2086
+ number: function number(string) {
2087
+ if (isNaN(string)) throw null;
2088
+ return parseFloat(string);
2089
+ },
2090
+ 'boolean': function _boolean(string) {
2091
+ return !/^\s*false\s*$/i.test(string);
2092
+ },
2093
+ object: function object(string) {
2094
+ return Utils__Utils.deserializeValue(string);
2095
+ },
2096
+ regexp: function regexp(_regexp) {
2097
+ var flags = '';
2098
+
2099
+ // Test if RegExp is literal, if not, nothing to be done, otherwise, we need to isolate flags and pattern
2100
+ if (/^\/.*\/(?:[gimy]*)$/.test(_regexp)) {
2101
+ // Replace the regexp literal string with the first match group: ([gimy]*)
2102
+ // If no flag is present, this will be a blank string
2103
+ flags = _regexp.replace(/.*\/([gimy]*)$/, '$1');
2104
+ // Again, replace the regexp literal string with the first match group:
2105
+ // everything excluding the opening and closing slashes and the flags
2106
+ _regexp = _regexp.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
2107
+ } else {
2108
+ // Anchor regexp:
2109
+ _regexp = '^' + _regexp + '$';
2110
+ }
2111
+ return new RegExp(_regexp, flags);
2112
+ }
2113
+ },
2114
+
2115
+ parseRequirement: function parseRequirement(requirementType, string) {
2116
+ var converter = this.parse[requirementType || 'string'];
2117
+ if (!converter) throw 'Unknown requirement specification: "' + requirementType + '"';
2118
+ var converted = converter(string);
2119
+ if (converted === null) throw 'Requirement is not a ' + requirementType + ': "' + string + '"';
2120
+ return converted;
2121
+ },
2122
+
2123
  namespaceEvents: function namespaceEvents(events, namespace) {
2124
  events = this.trimString(events || '').split(/\s+/);
2125
  if (!events[0]) return '';
2163
  _SubmitSelector: 'input[type="submit"], button:submit'
2164
  };
2165
 
2166
+ var Utils__default = Utils__Utils;
2167
 
2168
  // All these options could be overriden and specified directly in DOM using
2169
  // `data-parsley-` default DOM-API
2170
  // eg: `inputs` can be set in DOM using `data-parsley-inputs="input, textarea"`
2171
  // eg: `data-parsley-stop-on-first-failing-constraint="false"`
2172
 
2173
+ var Defaults = {
2174
  // ### General
2175
 
2176
  // Default data-namespace for DOM API
2217
 
2218
  // Return the `$element` that will receive these above success or error classes
2219
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
2220
+ classHandler: function classHandler(Field) {},
2221
 
2222
  // Return the `$element` where errors will be appended
2223
  // Could also be (and given directly from DOM) a valid selector like `'#div'`
2224
+ errorsContainer: function errorsContainer(Field) {},
2225
 
2226
  // ul elem that would receive errors' list
2227
  errorsWrapper: '<ul class="parsley-errors-list"></ul>',
2230
  errorTemplate: '<li></li>'
2231
  };
2232
 
2233
+ var Base = function Base() {
2234
+ this.__id__ = Utils__default.generateID();
2235
  };
2236
 
2237
+ Base.prototype = {
2238
  asyncSupport: true, // Deprecated
2239
 
2240
  _pipeAccordingToValidationResult: function _pipeAccordingToValidationResult() {
2249
  },
2250
 
2251
  actualizeOptions: function actualizeOptions() {
2252
+ Utils__default.attr(this.$element, this.options.namespace, this.domOptions);
2253
  if (this.parent && this.parent.actualizeOptions) this.parent.actualizeOptions();
2254
  return this;
2255
  },
2256
 
2257
  _resetOptions: function _resetOptions(initOptions) {
2258
+ this.domOptions = Utils__default.objectCreate(this.parent.options);
2259
+ this.options = Utils__default.objectCreate(this.domOptions);
2260
  // Shallow copy of ownProperties of initOptions:
2261
  for (var i in initOptions) {
2262
  if (initOptions.hasOwnProperty(i)) this.options[i] = initOptions[i];
2322
  },
2323
 
2324
  asyncIsValid: function asyncIsValid(group, force) {
2325
+ Utils__default.warnOnce("asyncIsValid is deprecated; please use whenValid instead");
2326
  return this.whenValid({ group: group, force: force });
2327
  },
2328
 
2331
  }
2332
  };
2333
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2334
  var convertArrayRequirement = function convertArrayRequirement(string, length) {
2335
  var m = string.match(/^\s*\[(.*)\]\s*$/);
2336
  if (!m) throw 'Requirement is not an array: "' + string + '"';
2337
+ var values = m[1].split(',').map(Utils__default.trimString);
2338
  if (values.length !== length) throw 'Requirement has ' + values.length + ' values when ' + length + ' are needed';
2339
  return values;
2340
  };
2341
 
 
 
 
 
 
 
2342
  var convertExtraOptionRequirement = function convertExtraOptionRequirement(requirementSpec, string, extraOptionReader) {
2343
  var main = null;
2344
  var extra = {};
2345
  for (var key in requirementSpec) {
2346
  if (key) {
2347
  var value = extraOptionReader(key);
2348
+ if ('string' === typeof value) value = Utils__default.parseRequirement(requirementSpec[key], value);
2349
  extra[key] = value;
2350
  } else {
2351
+ main = Utils__default.parseRequirement(requirementSpec[key], string);
2352
  }
2353
  }
2354
  return [main, extra];
2356
 
2357
  // A Validator needs to implement the methods `validate` and `parseRequirements`
2358
 
2359
+ var Validator = function Validator(spec) {
2360
  $.extend(true, this, spec);
2361
  };
2362
 
2363
+ Validator.prototype = {
2364
  // Returns `true` iff the given `value` is valid according the given requirements.
2365
  validate: function validate(value, requirementFirstArg) {
2366
  if (this.fn) {
2375
  if (!this.validateMultiple) throw 'Validator `' + this.name + '` does not handle multiple values';
2376
  return this.validateMultiple.apply(this, arguments);
2377
  } else {
2378
+ var instance = arguments[arguments.length - 1];
2379
+ if (this.validateDate && instance._isDateInput()) {
2380
+ arguments[0] = Utils__default.parse.date(arguments[0]);
2381
+ if (arguments[0] === null) return false;
2382
+ return this.validateDate.apply(this, arguments);
2383
+ }
2384
  if (this.validateNumber) {
2385
  if (isNaN(value)) return false;
2386
  arguments[0] = parseFloat(arguments[0]);
2404
  var type = this.requirementType;
2405
  if ($.isArray(type)) {
2406
  var values = convertArrayRequirement(requirements, type.length);
2407
+ for (var i = 0; i < values.length; i++) values[i] = Utils__default.parseRequirement(type[i], values[i]);
2408
  return values;
2409
  } else if ($.isPlainObject(type)) {
2410
  return convertExtraOptionRequirement(type, requirements, extraOptionReader);
2411
  } else {
2412
+ return [Utils__default.parseRequirement(type, requirements)];
2413
  }
2414
  },
2415
  // Defaults:
2419
 
2420
  };
2421
 
2422
+ var ValidatorRegistry = function ValidatorRegistry(validators, catalog) {
2423
+ this.__class__ = 'ValidatorRegistry';
2424
 
2425
  // Default Parsley locale is en
2426
  this.locale = 'en';
2428
  this.init(validators || {}, catalog || {});
2429
  };
2430
 
2431
+ var typeTesters = {
2432
  email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
2433
 
2434
  // Follow https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
2440
 
2441
  alphanum: /^\w+$/i,
2442
 
2443
+ date: {
2444
+ test: function test(value) {
2445
+ return Utils__default.parse.date(value) !== null;
2446
+ }
2447
+ },
2448
+
2449
  url: new RegExp("^" +
2450
  // protocol identifier
2451
  "(?:(?:https?|ftp)://)?" + // ** mod: make scheme optional
2473
  // resource path
2474
  "(?:/\\S*)?" + "$", 'i')
2475
  };
2476
+ typeTesters.range = typeTesters.number;
2477
 
2478
  // See http://stackoverflow.com/a/10454560/8279
2479
  var decimalPlaces = function decimalPlaces(num) {
2488
  match[2] ? +match[2] : 0));
2489
  };
2490
 
2491
+ // parseArguments('number', ['1', '2']) => [1, 2]
2492
+ var ValidatorRegistry__parseArguments = function ValidatorRegistry__parseArguments(type, args) {
2493
+ return args.map(Utils__default.parse[type]);
2494
+ };
2495
+ // operatorToValidator returns a validating function for an operator function, applied to the given type
2496
+ var ValidatorRegistry__operatorToValidator = function ValidatorRegistry__operatorToValidator(type, operator) {
2497
+ return function (value) {
2498
+ for (var _len = arguments.length, requirementsAndInput = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2499
+ requirementsAndInput[_key - 1] = arguments[_key];
2500
+ }
2501
+
2502
+ requirementsAndInput.pop(); // Get rid of `input` argument
2503
+ return operator.apply(undefined, [value].concat(_toConsumableArray(ValidatorRegistry__parseArguments(type, requirementsAndInput))));
2504
+ };
2505
+ };
2506
+
2507
+ var ValidatorRegistry__comparisonOperator = function ValidatorRegistry__comparisonOperator(operator) {
2508
+ return {
2509
+ validateDate: ValidatorRegistry__operatorToValidator('date', operator),
2510
+ validateNumber: ValidatorRegistry__operatorToValidator('number', operator),
2511
+ requirementType: operator.length <= 2 ? 'string' : ['string', 'string'], // Support operators with a 1 or 2 requirement(s)
2512
+ priority: 30
2513
+ };
2514
+ };
2515
+
2516
+ ValidatorRegistry.prototype = {
2517
  init: function init(validators, catalog) {
2518
  this.catalog = catalog;
2519
  // Copy prototype's validators:
2573
  // Old API was addValidator(name, function, priority)
2574
  //
2575
  addValidator: function addValidator(name, arg1, arg2) {
2576
+ if (this.validators[name]) Utils__default.warn('Validator "' + name + '" is already defined.');else if (Defaults.hasOwnProperty(name)) {
2577
+ Utils__default.warn('"' + name + '" is a restricted keyword and is not a valid validator name.');
2578
  return;
2579
  }
2580
  return this._setValidator.apply(this, arguments);
2582
 
2583
  updateValidator: function updateValidator(name, arg1, arg2) {
2584
  if (!this.validators[name]) {
2585
+ Utils__default.warn('Validator "' + name + '" is not already defined.');
2586
  return this.addValidator.apply(this, arguments);
2587
  }
2588
  return this._setValidator.apply(this, arguments);
2589
  },
2590
 
2591
  removeValidator: function removeValidator(name) {
2592
+ if (!this.validators[name]) Utils__default.warn('Validator "' + name + '" is not defined.');
2593
 
2594
  delete this.validators[name];
2595
 
2605
  };
2606
  }
2607
  if (!validator.validate) {
2608
+ validator = new Validator(validator);
2609
  }
2610
  this.validators[name] = validator;
2611
 
2671
  var _ref$base = _ref.base;
2672
  var base = _ref$base === undefined ? 0 : _ref$base;
2673
 
2674
+ var tester = typeTesters[type];
2675
+ if (!tester) {
2676
  throw new Error('validator type `' + type + '` is not supported');
2677
  }
2678
+ if (!tester.test(value)) return false;
2679
  if ('number' === type) {
2680
  if (!/^any$/i.test(step || '')) {
2681
  var nb = Number(value);
2747
  requirementType: ['integer', 'integer'],
2748
  priority: 30
2749
  },
2750
+ min: ValidatorRegistry__comparisonOperator(function (value, requirement) {
2751
+ return value >= requirement;
2752
+ }),
2753
+ max: ValidatorRegistry__comparisonOperator(function (value, requirement) {
2754
+ return value <= requirement;
2755
+ }),
2756
+ range: ValidatorRegistry__comparisonOperator(function (value, min, max) {
2757
+ return value >= min && value <= max;
2758
+ }),
 
 
 
 
 
 
 
 
 
 
 
 
2759
  equalto: {
2760
  validateString: function validateString(value, refOrValue) {
2761
  var $reference = $(refOrValue);
2766
  }
2767
  };
2768
 
2769
+ var UI = {};
2770
 
2771
  var diffResults = function diffResults(newResult, oldResult, deep) {
2772
  var added = [];
2790
  };
2791
  };
2792
 
2793
+ UI.Form = {
2794
 
2795
  _actualizeTriggers: function _actualizeTriggers() {
2796
  var _this2 = this;
2798
  this.$element.on('submit.Parsley', function (evt) {
2799
  _this2.onSubmitValidate(evt);
2800
  });
2801
+ this.$element.on('click.Parsley', Utils__default._SubmitSelector, function (evt) {
2802
  _this2.onSubmitButton(evt);
2803
  });
2804
 
2833
 
2834
  };
2835
 
2836
+ UI.Field = {
2837
 
2838
  _reflowUI: function _reflowUI() {
2839
  this._buildUI();
3029
  if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent();
3030
 
3031
  if ('string' === typeof this.options.errorsContainer) {
3032
+ if ($(this.options.errorsContainer).length) return $(this.options.errorsContainer).append(this._ui.$errorsWrapper);else Utils__default.warn('The errors container `' + this.options.errorsContainer + '` does not exist in DOM');
3033
  } else if ('function' === typeof this.options.errorsContainer) $errorsContainer = this.options.errorsContainer.call(this, this);
3034
 
3035
  if ('undefined' !== typeof $errorsContainer && $errorsContainer.length) return $errorsContainer.append(this._ui.$errorsWrapper);
3045
 
3046
  // Remove Parsley events already bound on this field
3047
  $toBind.off('.Parsley');
3048
+ if (this._failedOnce) $toBind.on(Utils__default.namespaceEvents(this.options.triggerAfterFailure, 'Parsley'), function () {
3049
  _this3._validateIfNeeded();
3050
+ });else if (trigger = Utils__default.namespaceEvents(this.options.trigger, 'Parsley')) {
3051
  $toBind.on(trigger, function (event) {
3052
  _this3._validateIfNeeded(event);
3053
  });
3110
  }
3111
  };
3112
 
3113
+ var Form = function Form(element, domOptions, options) {
3114
+ this.__class__ = 'Form';
3115
 
3116
  this.$element = $(element);
3117
  this.domOptions = domOptions;
3122
  this.validationResult = null;
3123
  };
3124
 
3125
+ var Form__statusMapping = { pending: null, resolved: true, rejected: false };
3126
 
3127
+ Form.prototype = {
3128
  onSubmitValidate: function onSubmitValidate(event) {
3129
  var _this5 = this;
3130
 
3132
  if (true === event.parsley) return;
3133
 
3134
  // If we didn't come here through a submit button, use the first one in the form
3135
+ var $submitSource = this._$submitSource || this.$element.find(Utils__default._SubmitSelector).first();
3136
  this._$submitSource = null;
3137
  this.$element.find('.parsley-synthetic-submit-button').prop('disabled', true);
3138
  if ($submitSource.is('[formnovalidate]')) return;
3180
  // Consider using `whenValidate` instead.
3181
  validate: function validate(options) {
3182
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3183
+ Utils__default.warnOnce('Calling validate on a parsley form without passing arguments as an object is deprecated.');
3184
 
3185
  var _arguments = _slice.call(arguments);
3186
 
3190
 
3191
  options = { group: group, force: force, event: event };
3192
  }
3193
+ return Form__statusMapping[this.whenValidate(options).state()];
3194
  },
3195
 
3196
  whenValidate: function whenValidate() {
3197
+ var _Utils__default$all$done$fail$always,
3198
  _this6 = this;
3199
 
3200
  var _ref7 = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
3206
  this.submitEvent = event;
3207
  if (event) {
3208
  this.submitEvent = $.extend({}, event, { preventDefault: function preventDefault() {
3209
+ Utils__default.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`");
3210
  _this6.validationResult = false;
3211
  } });
3212
  }
3224
  });
3225
  });
3226
 
3227
+ return (_Utils__default$all$done$fail$always = Utils__default.all(promises).done(function () {
3228
  _this6._trigger('success');
3229
  }).fail(function () {
3230
  _this6.validationResult = false;
3232
  _this6._trigger('error');
3233
  }).always(function () {
3234
  _this6._trigger('validated');
3235
+ })).pipe.apply(_Utils__default$all$done$fail$always, _toConsumableArray(this._pipeAccordingToValidationResult()));
3236
  },
3237
 
3238
  // Iterate over refreshed fields, and stop on first failure.
3241
  // Prefer using `whenValid` instead.
3242
  isValid: function isValid(options) {
3243
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3244
+ Utils__default.warnOnce('Calling isValid on a parsley form without passing arguments as an object is deprecated.');
3245
 
3246
  var _arguments2 = _slice.call(arguments);
3247
 
3250
 
3251
  options = { group: group, force: force };
3252
  }
3253
+ return Form__statusMapping[this.whenValid(options).state()];
3254
  },
3255
 
3256
  // Iterate over refreshed fields and validate them.
3271
  return field.whenValid({ group: group, force: force });
3272
  });
3273
  });
3274
+ return Utils__default.all(promises);
3275
  },
3276
 
3277
  // Reset UI
3310
  _this8.$element.find(_this8.options.inputs).not(_this8.options.excluded).each(function (_, element) {
3311
  var fieldInstance = new window.Parsley.Factory(element, {}, _this8);
3312
 
3313
+ // Only add valid and not excluded `Field` and `FieldMultiple` children
3314
+ if (('Field' === fieldInstance.__class__ || 'FieldMultiple' === fieldInstance.__class__) && true !== fieldInstance.options.excluded) {
3315
  var uniqueId = fieldInstance.__class__ + '-' + fieldInstance.__id__;
3316
  if ('undefined' === typeof _this8.fieldsMappedById[uniqueId]) {
3317
  _this8.fieldsMappedById[uniqueId] = fieldInstance;
3320
  }
3321
  });
3322
 
3323
+ $.each(Utils__default.difference(oldFields, _this8.fields), function (_, field) {
3324
  field.reset();
3325
  });
3326
  });
3355
 
3356
  var Constraint = function Constraint(parsleyField, name, requirements, priority, isDomConstraint) {
3357
  var validatorSpec = window.Parsley._validatorRegistry.validators[name];
3358
+ var validator = new Validator(validatorSpec);
3359
 
3360
  $.extend(this, {
3361
  validator: validator,
3388
  }
3389
  };
3390
 
3391
+ var Field = function Field(field, domOptions, options, parsleyFormInstance) {
3392
+ this.__class__ = 'Field';
3393
 
3394
  this.$element = $(field);
3395
 
3412
 
3413
  var parsley_field__statusMapping = { pending: null, resolved: true, rejected: false };
3414
 
3415
+ Field.prototype = {
3416
  // # Public API
3417
+ // Validate field and trigger some events for mainly `UI`
3418
  // @returns `true`, an array of the validators that failed, or
3419
  // `null` if validation is not finished. Prefer using whenValidate
3420
  validate: function validate(options) {
3421
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3422
+ Utils__default.warnOnce('Calling validate on a parsley field without passing arguments as an object is deprecated.');
3423
  options = { options: options };
3424
  }
3425
  var promise = this.whenValidate(options);
3435
  }
3436
  },
3437
 
3438
+ // Validate field and trigger some events for mainly `UI`
3439
  // @returns a promise that succeeds only when all validations do
3440
  // or `undefined` if field is not in the given `group`.
3441
  whenValidate: function whenValidate() {
3493
  // See also `whenValid`.
3494
  isValid: function isValid(options) {
3495
  if (arguments.length >= 1 && !$.isPlainObject(options)) {
3496
+ Utils__default.warnOnce('Calling isValid on a parsley field without passing arguments as an object is deprecated.');
3497
 
3498
  var _arguments3 = _slice.call(arguments);
3499
 
3544
  $.each(groupedConstraints, function (_, constraints) {
3545
  // Process one group of constraints at a time, we validate the constraints
3546
  // and combine the promises together.
3547
+ var promise = Utils__default.all($.map(constraints, function (constraint) {
3548
  return _this11._validateConstraint(value, constraint);
3549
  }));
3550
  promises.push(promise);
3551
  if (promise.state() === 'rejected') return false; // Interrupt processing if a group has already failed
3552
  });
3553
+ return Utils__default.all(promises);
3554
  },
3555
 
3556
  // @returns a promise
3561
  // Map false to a failed promise
3562
  if (false === result) result = $.Deferred().reject();
3563
  // Make sure we return a promise and that we record failures
3564
+ return Utils__default.all([result]).fail(function (errorMessage) {
3565
  if (!(_this12.validationResult instanceof Array)) _this12.validationResult = [];
3566
  _this12.validationResult.push({
3567
  assert: constraint,
3594
  // Field case: emit destroy event to clean UI and then destroy stored instance
3595
  this._destroyUI();
3596
  this.$element.removeData('Parsley');
3597
+ this.$element.removeData('FieldMultiple');
3598
  this._trigger('destroy');
3599
  },
3600
 
3676
  if ('string' === typeof this.$element.attr('pattern')) this.addConstraint('pattern', this.$element.attr('pattern'), undefined, true);
3677
 
3678
  // range
3679
+ if ('undefined' !== typeof this.$element.attr('min') && 'undefined' !== typeof this.$element.attr('max')) this.addConstraint('range', [this.$element.attr('min'), this.$element.attr('max')], undefined, true);
3680
 
3681
  // HTML5 min
3682
+ else if ('undefined' !== typeof this.$element.attr('min')) this.addConstraint('min', this.$element.attr('min'), undefined, true);
3683
 
3684
  // HTML5 max
3685
+ else if ('undefined' !== typeof this.$element.attr('max')) this.addConstraint('max', this.$element.attr('max'), undefined, true);
3686
 
3687
  // length
3688
  if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength')) this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
3705
  base: this.$element.attr('min') || this.$element.attr('value')
3706
  }], undefined, true);
3707
  // Regular other HTML5 supported types
3708
+ } else if (/^(email|url|range|date)$/i.test(type)) {
3709
  return this.addConstraint('type', type, undefined, true);
3710
  }
3711
  return this;
3730
  // Use `data-parsley-whitespace="squish"` to auto squish input value
3731
  // Use `data-parsley-whitespace="trim"` to auto trim input value
3732
  _handleWhitespace: function _handleWhitespace(value) {
3733
+ if (true === this.options.trimValue) Utils__default.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"');
3734
 
3735
  if ('squish' === this.options.whitespace) value = value.replace(/\s{2,}/g, ' ');
3736
 
3737
+ if ('trim' === this.options.whitespace || 'squish' === this.options.whitespace || true === this.options.trimValue) value = Utils__default.trimString(value);
3738
 
3739
  return value;
3740
  },
3741
 
3742
+ _isDateInput: function _isDateInput() {
3743
+ var c = this.constraintsByName.type;
3744
+ return c && c.requirements === 'date';
3745
+ },
3746
+
3747
  // Internal only.
3748
  // Returns the constraints, grouped by descending priority.
3749
  // The result is thus an array of arrays of constraints.
3769
 
3770
  };
3771
 
3772
+ var parsley_field = Field;
3773
 
3774
+ var Multiple = function Multiple() {
3775
+ this.__class__ = 'FieldMultiple';
3776
  };
3777
 
3778
+ Multiple.prototype = {
3779
  // Add new `$element` sibling for multiple field
3780
  addElement: function addElement($element) {
3781
  this.$elements.push($element);
3783
  return this;
3784
  },
3785
 
3786
+ // See `Field.refreshConstraints()`
3787
  refreshConstraints: function refreshConstraints() {
3788
  var fieldConstraints;
3789
 
3805
  continue;
3806
  }
3807
 
3808
+ fieldConstraints = this.$elements[i].data('FieldMultiple').refreshConstraints().constraints;
3809
 
3810
  for (var j = 0; j < fieldConstraints.length; j++) this.addConstraint(fieldConstraints[j].name, fieldConstraints[j].requirements, fieldConstraints[j].priority, fieldConstraints[j].isDomConstraint);
3811
  }
3813
  return this;
3814
  },
3815
 
3816
+ // See `Field.getValue()`
3817
  getValue: function getValue() {
3818
  // Value could be overriden in DOM
3819
  if ('function' === typeof this.options.value) return this.options.value(this);else if ('undefined' !== typeof this.options.value) return this.options.value;
3846
  }
3847
  };
3848
 
3849
+ var Factory = function Factory(element, options, parsleyFormInstance) {
3850
  this.$element = $(element);
3851
 
3852
  // If the element has already been bound, returns its saved Parsley instance
3853
  var savedparsleyFormInstance = this.$element.data('Parsley');
3854
  if (savedparsleyFormInstance) {
3855
 
3856
+ // If the saved instance has been bound without a Form parent and there is one given in this call, add it
3857
  if ('undefined' !== typeof parsleyFormInstance && savedparsleyFormInstance.parent === window.Parsley) {
3858
  savedparsleyFormInstance.parent = parsleyFormInstance;
3859
  savedparsleyFormInstance._resetOptions(savedparsleyFormInstance.options);
3869
  // Parsley must be instantiated with a DOM element or jQuery $element
3870
  if (!this.$element.length) throw new Error('You must bind Parsley on an existing element.');
3871
 
3872
+ if ('undefined' !== typeof parsleyFormInstance && 'Form' !== parsleyFormInstance.__class__) throw new Error('Parent instance must be a Form instance');
3873
 
3874
  this.parent = parsleyFormInstance || window.Parsley;
3875
  return this.init(options);
3876
  };
3877
 
3878
+ Factory.prototype = {
3879
  init: function init(options) {
3880
  this.__class__ = 'Parsley';
3881
+ this.__version__ = '2.7.0';
3882
+ this.__id__ = Utils__default.generateID();
3883
 
3884
  // Pre-compute options
3885
  this._resetOptions(options);
3886
 
3887
+ // A Form instance is obviously a `<form>` element but also every node that is not an input and has the `data-parsley-validate` attribute
3888
+ if (this.$element.is('form') || Utils__default.checkAttr(this.$element, this.options.namespace, 'validate') && !this.$element.is(this.options.inputs)) return this.bind('parsleyForm');
3889
 
3890
+ // Every other element is bound as a `Field` or `FieldMultiple`
3891
  return this.isMultiple() ? this.handleMultiple() : this.bind('parsleyField');
3892
  },
3893
 
3915
 
3916
  // Else for radio / checkboxes, we need a `name` or `data-parsley-multiple` to properly bind it
3917
  } else if (!this.options.multiple) {
3918
+ Utils__default.warn('To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.', this.$element);
3919
  return this;
3920
  }
3921
 
3935
  parsleyMultipleInstance = $($previouslyRelated.get(i)).data('Parsley');
3936
  if ('undefined' !== typeof parsleyMultipleInstance) {
3937
 
3938
+ if (!this.$element.data('FieldMultiple')) {
3939
  parsleyMultipleInstance.addElement(this.$element);
3940
  }
3941
 
3943
  }
3944
  }
3945
 
3946
+ // Create a secret Field instance for every multiple field. It will be stored in `data('FieldMultiple')`
3947
+ // And will be useful later to access classic `Field` stuff while being in a `FieldMultiple` instance
3948
  this.bind('parsleyField', true);
3949
 
3950
  return parsleyMultipleInstance || this.bind('parsleyFieldMultiple');
3951
  },
3952
 
3953
+ // Return proper `Form`, `Field` or `FieldMultiple`
3954
  bind: function bind(type, doNotStore) {
3955
  var parsleyInstance;
3956
 
3957
  switch (type) {
3958
  case 'parsleyForm':
3959
+ parsleyInstance = $.extend(new Form(this.$element, this.domOptions, this.options), new Base(), window.ParsleyExtend)._bindFields();
3960
  break;
3961
  case 'parsleyField':
3962
+ parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Base(), window.ParsleyExtend);
3963
  break;
3964
  case 'parsleyFieldMultiple':
3965
+ parsleyInstance = $.extend(new parsley_field(this.$element, this.domOptions, this.options, this.parent), new Multiple(), new Base(), window.ParsleyExtend)._init();
3966
  break;
3967
  default:
3968
  throw new Error(type + 'is not a supported Parsley type');
3969
  }
3970
 
3971
+ if (this.options.multiple) Utils__default.setAttr(this.$element, this.options.namespace, 'multiple', this.options.multiple);
3972
 
3973
  if ('undefined' !== typeof doNotStore) {
3974
+ this.$element.data('FieldMultiple', parsleyInstance);
3975
 
3976
  return parsleyInstance;
3977
  }
3979
  // Store the freshly bound instance in a DOM element for later access using jQuery `data()`
3980
  this.$element.data('Parsley', parsleyInstance);
3981
 
3982
+ // Tell the world we have a new Form or Field instance!
3983
  parsleyInstance._actualizeTriggers();
3984
  parsleyInstance._trigger('init');
3985
 
3992
  throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";
3993
  }
3994
  if (!vernums.forEach) {
3995
+ Utils__default.warn('Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim');
3996
  }
3997
  // Inherit `on`, `off` & `trigger` to Parsley:
3998
+ var Parsley = $.extend(new Base(), {
3999
  $element: $(document),
4000
  actualizeOptions: null,
4001
  _resetOptions: null,
4002
+ Factory: Factory,
4003
+ version: '2.7.0'
4004
  });
4005
 
4006
+ // Supplement Field and Form with Base
4007
  // This way, the constructors will have access to those methods
4008
+ $.extend(parsley_field.prototype, UI.Field, Base.prototype);
4009
+ $.extend(Form.prototype, UI.Form, Base.prototype);
4010
  // Inherit actualizeOptions and _resetOptions:
4011
+ $.extend(Factory.prototype, Base.prototype);
4012
 
4013
  // ### jQuery API
4014
  // `$('.elem').parsley(options)` or `$('.elem').psly(options)`
4025
 
4026
  // Return undefined if applied to non existing DOM element
4027
  if (!$(this).length) {
4028
+ Utils__default.warn('You must bind Parsley on an existing element.');
4029
 
4030
  return;
4031
  }
4032
 
4033
+ return new Factory(this, options);
4034
  };
4035
 
4036
+ // ### Field and Form extension
4037
  // Ensure the extension is now defined if it wasn't previously
4038
  if ('undefined' === typeof window.ParsleyExtend) window.ParsleyExtend = {};
4039
 
4040
  // ### Parsley config
4041
  // Inherit from ParsleyDefault, and copy over any existing values
4042
+ Parsley.options = $.extend(Utils__default.objectCreate(Defaults), window.ParsleyConfig);
4043
  window.ParsleyConfig = Parsley.options; // Old way of accessing global options
4044
 
4045
  // ### Globals
4046
  window.Parsley = window.psly = Parsley;
4047
+ Parsley.Utils = Utils__default;
4048
+ window.ParsleyUtils = {};
4049
+ $.each(Utils__default, function (key, value) {
4050
+ if ('function' === typeof value) {
4051
+ window.ParsleyUtils[key] = function () {
4052
+ Utils__default.warnOnce('Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead.');
4053
+ return Utils__default[key].apply(Utils__default, arguments);
4054
+ };
4055
+ }
4056
+ });
4057
 
4058
  // ### Define methods that forward to the registry, and deprecate all access except through window.Parsley
4059
+ var registry = window.Parsley._validatorRegistry = new ValidatorRegistry(window.ParsleyConfig.validators, window.ParsleyConfig.i18n);
4060
  window.ParsleyValidator = {};
4061
  $.each('setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator'.split(' '), function (i, method) {
4062
  window.Parsley[method] = $.proxy(registry, method);
4063
  window.ParsleyValidator[method] = function () {
4064
  var _window$Parsley;
4065
 
4066
+ Utils__default.warnOnce('Accessing the method \'' + method + '\' through Validator is deprecated. Simply call \'window.Parsley.' + method + '(...)\'');
4067
  return (_window$Parsley = window.Parsley)[method].apply(_window$Parsley, arguments);
4068
  };
4069
  });
4070
 
4071
+ // ### UI
4072
  // Deprecated global object
4073
+ window.Parsley.UI = UI;
4074
  window.ParsleyUI = {
4075
  removeError: function removeError(instance, name, doNotUpdateClass) {
4076
  var updateClass = true !== doNotUpdateClass;
4077
+ Utils__default.warnOnce('Accessing UI is deprecated. Call \'removeError\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
4078
  return instance.removeError(name, { updateClass: updateClass });
4079
  },
4080
  getErrorsMessages: function getErrorsMessages(instance) {
4081
+ Utils__default.warnOnce('Accessing UI is deprecated. Call \'getErrorsMessages\' on the instance directly.');
4082
  return instance.getErrorsMessages();
4083
  }
4084
  };
4085
  $.each('addError updateError'.split(' '), function (i, method) {
4086
  window.ParsleyUI[method] = function (instance, name, message, assert, doNotUpdateClass) {
4087
  var updateClass = true !== doNotUpdateClass;
4088
+ Utils__default.warnOnce('Accessing UI is deprecated. Call \'' + method + '\' on the instance directly. Please comment in issue 1073 as to your need to call this method.');
4089
  return instance[method](name, { message: message, assert: assert, updateClass: updateClass });
4090
  };
4091
  });
4101
 
4102
  var o = $({});
4103
  var deprecated = function deprecated() {
4104
+ Utils__default.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley");
4105
  };
4106
 
4107
  // Returns an event handler that calls `fn` with the arguments it expects
4140
 
4141
  $.listenTo = function (instance, name, fn) {
4142
  deprecated();
4143
+ if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
4144
 
4145
  if ('string' !== typeof name || 'function' !== typeof fn) throw new Error('Wrong parameters');
4146
 
4155
 
4156
  $.unsubscribeTo = function (instance, name) {
4157
  deprecated();
4158
+ if (!(instance instanceof parsley_field) && !(instance instanceof Form)) throw new Error('Must give Parsley instance');
4159
  instance.off(eventName(name));
4160
  };
4161
 
4175
  var _instance;
4176
 
4177
  deprecated();
4178
+ var instanceGiven = instance instanceof parsley_field || instance instanceof Form;
4179
  var args = Array.prototype.slice.call(arguments, instanceGiven ? 2 : 1);
4180
  args.unshift(eventName(name));
4181
  if (!instanceGiven) {
4283
  });
4284
 
4285
  window.ParsleyExtend.addAsyncValidator = function () {
4286
+ Utils.warnOnce('Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`');
4287
  return Parsley.addAsyncValidator.apply(Parsley, arguments);
4288
  };
4289
 
lang/index.php CHANGED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ // Silence is golden
lang/mailpoet-fr_FR.po DELETED
@@ -1,4648 +0,0 @@
1
- # Copyright (C) 2017
2
- # This file is distributed under the same license as the package.
3
- # Translators:
4
- # FX Bénard <fxb@wp-translations.org>, 2015-2017
5
- # FX Bénard <fxb@wp-translations.org>, 2015
6
- # Ⓦolforg <contact@wolforg.eu>, 2016-2017
7
- msgid ""
8
- msgstr ""
9
- "Project-Id-Version: MP3\n"
10
- "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
11
- "POT-Creation-Date: 2017-02-02 17:45:58+00:00\n"
12
- "PO-Revision-Date: 2017-02-13 09:31+0000\n"
13
- "Last-Translator: Ⓦolforg <contact@wolforg.eu>\n"
14
- "Language-Team: French (France) (http://www.transifex.com/wysija/mp3/language/fr_FR/)\n"
15
- "MIME-Version: 1.0\n"
16
- "Content-Type: text/plain; charset=UTF-8\n"
17
- "Content-Transfer-Encoding: 8bit\n"
18
- "Language: fr_FR\n"
19
- "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20
- "X-Generator: grunt-wp-i18n 0.5.2\n"
21
- "X-Poedit-Basepath: ../\n"
22
- "X-Poedit-Bookmarks: \n"
23
- "X-Poedit-Country: United States\n"
24
- "X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
25
- "X-Poedit-SearchPath-0: .\n"
26
- "X-Poedit-SourceCharset: UTF-8\n"
27
- "X-Textdomain-Support: yes\n"
28
-
29
- #: lib/API/API.php:41 lib/API/API.php:67
30
- msgid "Invalid request"
31
- msgstr "Requête non valide."
32
-
33
- #: lib/API/API.php:114
34
- msgid "You do not have the required permissions."
35
- msgstr "Vous n’avez pas les permissions nécessaires."
36
-
37
- #: lib/API/Endpoint.php:21
38
- msgid "An unknown error occurred."
39
- msgstr "Une erreur inconnue s’est produite."
40
-
41
- #: lib/API/Endpoint.php:30
42
- msgid "Invalid request parameters"
43
- msgstr "Paramètres de la requête non valides."
44
-
45
- #: lib/API/Endpoints/CustomFields.php:24 lib/API/Endpoints/CustomFields.php:51
46
- msgid "This custom field does not exist."
47
- msgstr "Ce champ personnalisé n’existe pas."
48
-
49
- #: lib/API/Endpoints/Forms.php:20 lib/API/Endpoints/Forms.php:127
50
- #: lib/API/Endpoints/Forms.php:209 lib/API/Endpoints/Forms.php:225
51
- #: lib/API/Endpoints/Forms.php:241 lib/API/Endpoints/Forms.php:255
52
- msgid "This form does not exist."
53
- msgstr "Ce formulaire n’existe pas."
54
-
55
- #: lib/API/Endpoints/Forms.php:60 lib/API/Endpoints/Forms.php:139
56
- msgid "New form"
57
- msgstr "Nouveau formulaire"
58
-
59
- #: lib/API/Endpoints/Forms.php:64 lib/API/Endpoints/Forms.php:68
60
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:32
61
- #: views/newsletter/editor.html:920 views/newsletter/editor.html:921
62
- msgid "Email"
63
- msgstr "E-mail"
64
-
65
- #: lib/API/Endpoints/Forms.php:74
66
- msgid "Submit"
67
- msgstr "Envoyer"
68
-
69
- #: lib/API/Endpoints/Forms.php:78
70
- msgid "Subscribe!"
71
- msgstr "Je m’abonne !"
72
-
73
- #: lib/API/Endpoints/Forms.php:84
74
- msgid "Check your inbox or spam folder to confirm your subscription."
75
- msgstr "Vérifiez votre boite de réception ou votre répertoire d’indésirables pour confirmer votre abonnement."
76
-
77
- #: lib/API/Endpoints/Forms.php:259 lib/API/Endpoints/Newsletters.php:188
78
- #: lib/API/Endpoints/Segments.php:119
79
- msgid "Copy of %s"
80
- msgstr "Copie de %s"
81
-
82
- #: lib/API/Endpoints/Mailer.php:26 lib/API/Endpoints/Newsletters.php:286
83
- msgid "The email could not be sent: %s"
84
- msgstr "L’e-mail n’a pas pu être envoyé : %s"
85
-
86
- #: lib/API/Endpoints/NewsletterTemplates.php:16
87
- #: lib/API/Endpoints/NewsletterTemplates.php:52
88
- msgid "This template does not exist."
89
- msgstr "Ce modèle n’existe pas."
90
-
91
- #: lib/API/Endpoints/Newsletters.php:28 lib/API/Endpoints/Newsletters.php:117
92
- #: lib/API/Endpoints/Newsletters.php:138 lib/API/Endpoints/Newsletters.php:154
93
- #: lib/API/Endpoints/Newsletters.php:170 lib/API/Endpoints/Newsletters.php:184
94
- #: lib/API/Endpoints/Newsletters.php:216 lib/API/Endpoints/Newsletters.php:247
95
- #: lib/API/Endpoints/SendingQueue.php:28
96
- #: lib/API/Endpoints/SendingQueue.php:118
97
- #: lib/API/Endpoints/SendingQueue.php:144
98
- msgid "This newsletter does not exist."
99
- msgstr "Cette newsletter n’existe pas."
100
-
101
- #: lib/API/Endpoints/Newsletters.php:108
102
- msgid "You need to specify a status."
103
- msgstr "Vous devez spécifier un état."
104
-
105
- #: lib/API/Endpoints/Newsletters.php:207
106
- msgid "Newsletter data is missing."
107
- msgstr "Les données de la newsletter sont absentes."
108
-
109
- #: lib/API/Endpoints/Newsletters.php:238
110
- msgid "Please specify receiver information."
111
- msgstr "Veuillez spécifier les informations du destinataire."
112
-
113
- #: lib/API/Endpoints/Segments.php:18 lib/API/Endpoints/Segments.php:69
114
- #: lib/API/Endpoints/Segments.php:85 lib/API/Endpoints/Segments.php:101
115
- #: lib/API/Endpoints/Segments.php:115
116
- msgid "This list does not exist."
117
- msgstr "Cette liste n’existe pas."
118
-
119
- #: lib/API/Endpoints/SendingQueue.php:48
120
- msgid "This newsletter is already being sent."
121
- msgstr "Cette newsletter a déjà été envoyée."
122
-
123
- #: lib/API/Endpoints/SendingQueue.php:82
124
- msgid "There are no subscribers in that list!"
125
- msgstr "Il n’y a aucun abonné dans cette liste !"
126
-
127
- #: lib/API/Endpoints/SendingQueue.php:125
128
- #: lib/API/Endpoints/SendingQueue.php:151
129
- msgid "This newsletter has not been sent yet."
130
- msgstr "Cette newsletter n’a pas encore été envoyée."
131
-
132
- #: lib/API/Endpoints/Services.php:23
133
- msgid "Please specify a key."
134
- msgstr "Veuillez spécifier une clé."
135
-
136
- #: lib/API/Endpoints/Services.php:39
137
- msgid "Your MailPoet API key is valid!"
138
- msgstr "Votre clé d’API MailPoet n’est pas valide."
139
-
140
- #: lib/API/Endpoints/Services.php:42
141
- msgid "Your MailPoet key expires on %s!"
142
- msgstr "Votre clé MailPoet expire le %s !"
143
-
144
- #: lib/API/Endpoints/Services.php:54
145
- msgid "Your MailPoet key is invalid!"
146
- msgstr "Votre clé MailPoet n’est pas valide !"
147
-
148
- #: lib/API/Endpoints/Services.php:59
149
- msgid "Error validating API key, please try again later (code: %s)"
150
- msgstr "Erreur de validation de la clé API, veuillez réessayer ultérieurement (code : %s)"
151
-
152
- #: lib/API/Endpoints/Settings.php:19
153
- msgid "You have not specified any settings to be saved."
154
- msgstr "Vous n’avez spécifié aucun réglage à enregistrer."
155
-
156
- #: lib/API/Endpoints/Subscribers.php:25 lib/API/Endpoints/Subscribers.php:139
157
- #: lib/API/Endpoints/Subscribers.php:155 lib/API/Endpoints/Subscribers.php:171
158
- msgid "This subscriber does not exist."
159
- msgstr "Cet abonné n’existe pas."
160
-
161
- #: lib/API/Endpoints/Subscribers.php:66
162
- msgid "Please specify a valid form ID."
163
- msgstr "Veuillez spécifier un ID de formulaire valide."
164
-
165
- #: lib/API/Endpoints/Subscribers.php:79 views/form/editor.html:57
166
- msgid "Please select a list."
167
- msgstr "Veuillez sélectionner une liste."
168
-
169
- #: lib/Config/Hooks.php:149
170
- msgid "MailPoet Newsletter"
171
- msgstr "MailPoet Newsletter"
172
-
173
- #: lib/Config/Menu.php:63 lib/Config/Menu.php:64 views/newsletters.html:23
174
- msgid "Emails"
175
- msgstr "E-mails"
176
-
177
- #: lib/Config/Menu.php:86 lib/Config/Menu.php:87 views/forms.html:16
178
- msgid "Forms"
179
- msgstr "Formulaires"
180
-
181
- #: lib/Config/Menu.php:108 lib/Config/Menu.php:109
182
- #: views/subscribers/subscribers.html:17
183
- msgid "Subscribers"
184
- msgstr "Abonnés"
185
-
186
- #: lib/Config/Menu.php:130 lib/Config/Menu.php:131 views/forms.html:43
187
- #: views/newsletters.html:63 views/newsletters.html:150 views/segments.html:13
188
- #: views/subscribers/subscribers.html:62
189
- msgid "Lists"
190
- msgstr "Listes"
191
-
192
- #: lib/Config/Menu.php:153 lib/Config/Menu.php:154 views/form/editor.html:37
193
- #: views/newsletters.html:64 views/settings.html:6
194
- msgid "Settings"
195
- msgstr "Réglages"
196
-
197
- #: lib/Config/Menu.php:164 lib/Config/Menu.php:165
198
- #: views/subscribers/importExport/import.html:7
199
- #: views/subscribers/subscribers.html:90
200
- msgid "Import"
201
- msgstr "Importer"
202
-
203
- #: lib/Config/Menu.php:176 lib/Config/Menu.php:177
204
- #: views/subscribers/importExport/export.html:6
205
- #: views/subscribers/importExport/export.html:96
206
- #: views/subscribers/subscribers.html:91
207
- msgid "Export"
208
- msgstr "Exporter"
209
-
210
- #: lib/Config/Menu.php:188 lib/Config/Menu.php:189 views/update.html:20
211
- #: views/welcome.html:29
212
- msgid "Welcome"
213
- msgstr "Bienvenue"
214
-
215
- #: lib/Config/Menu.php:200 lib/Config/Menu.php:201 views/segments.html:43
216
- msgid "Update"
217
- msgstr "Mettre à jour"
218
-
219
- #: lib/Config/Menu.php:212 lib/Config/Menu.php:213
220
- msgid "Form Editor"
221
- msgstr "Éditeur de formulaire"
222
-
223
- #: lib/Config/Menu.php:224 lib/Newsletter/Shortcodes/ShortcodesHelper.php:32
224
- #: views/newsletter/templates/components/sidebar/styles.hbs:74
225
- #: views/newsletters.html:106
226
- msgid "Newsletter"
227
- msgstr "Newsletter"
228
-
229
- #: lib/Config/Menu.php:225
230
- msgid "Newsletter Editor"
231
- msgstr "Éditeur de newsletter"
232
-
233
- #: lib/Config/Menu.php:404
234
- msgid "In any WordPress role"
235
- msgstr "Peu importe le rôle"
236
-
237
- #: lib/Config/Menu.php:479
238
- msgid "MailPoet"
239
- msgstr "MailPoet"
240
-
241
- #: lib/Config/Populator.php:139
242
- msgid "My First List"
243
- msgstr "Ma première liste"
244
-
245
- #: lib/Config/Populator.php:141
246
- msgid "This list is automatically created when you install MailPoet."
247
- msgstr "Cette liste a été créée automatiquement lors de l’installation de MailPoet."
248
-
249
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:16
250
- msgid "Frank's Roast House"
251
- msgstr "Franck - Maison de torréfaction"
252
-
253
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:17
254
- msgid ""
255
- "Think of this as your sandbox. Play around with this example newsletter to "
256
- "see what MailPoet can do for you."
257
- msgstr "Pensez à ceci comme à un bac à sable. Jouez avec cet exemple de newsletter pour voir ce que MailPoet peut faire pour vous."
258
-
259
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:49
260
- msgid ""
261
- "<a href=\"[link:newsletter_view_in_browser_url]\">Open this email in your "
262
- "web browser.</a>"
263
- msgstr "<a href=\"[link:newsletter_view_in_browser_url]\">Ouvrir cet e-mail dans votre navigateur.</a>"
264
-
265
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:70
266
- msgid "Frank's Café"
267
- msgstr "Le café de Franck"
268
-
269
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:91
270
- msgid ""
271
- "<p>Hi there [subscriber:firstname | default:coffee drinker]</p>\n"
272
- "<p></p>\n"
273
- "<p>Sit back and enjoy your favorite roast as you read this week's newsletter. </p>"
274
- msgstr "<p>Bonjour [subscriber:firstname | default:amateur de café]</p>\n<p></p>\n<p>Installez-vous confortablement et savourez votre café préféré en lisant la newsletter de cette semaine. </p>"
275
-
276
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:97
277
- msgid "Coffee grain"
278
- msgstr "Grain de café"
279
-
280
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:109
281
- msgid ""
282
- "<h1 style=\"text-align: center;\">--- Guest Coffee Roaster: <em>Brew Bros. ---</em></h1>\n"
283
- "<p><em></em></p>\n"
284
- "<p>Visit our Center Avenue store to try the latest guest coffee from Brew Bros, a local coffee roaster. This young duo started only two years ago, but have quickly gained popularity through pop-up shops, local events, and collaborations with food trucks.</p>\n"
285
- "<p></p>\n"
286
- "<blockquote>\n"
287
- "<p><span style=\"color: #ff6600;\"><em>Tasting notes: A rich, caramel flavor with subtle hints of molasses. The perfect wake-up morning espresso!</em></span></p>\n"
288
- "</blockquote>"
289
- msgstr "<h1 style=\"text-align: center;\">--- Torréfacteurs de café invités : <em>Les frères Moulu. ---</em></h1>\n<p><em></em></p>\n<p>Visitez notre boutique du centre pour gouter les derniers cafés des frères Moulu, torréfacteurs de café régionaux. Ce jeune duo lancé depuis moins de deux ans a gagné rapidement en popularité grâce à leurs participations à des évènements locaux et à leurs partenariats avec des food trucks.</p>\n<p></p>\n<blockquote>\n<p><span style=\"color: #ff6600;\"><em>Notes gustatives : Un goût riche, caramélisé avec des touches subtiles de mélasse. L’expresso parfait pour partir du bon pied le matin !</em></span></p>\n</blockquote>"
290
-
291
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:135
292
- msgid "<h2>Sandwich Competition</h2>"
293
- msgstr "<h2>Compétition de sandwich</h2>"
294
-
295
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:141
296
- msgid "Sandwich"
297
- msgstr "Sandwich"
298
-
299
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:153
300
- msgid ""
301
- "<p>Have an idea for the Next Great Sandwich? Tell us! We're offering free lunch for a month if you can invent an awesome new sandwich for our menu.</p>\n"
302
- "<p></p>\n"
303
- "<p></p>\n"
304
- "<p>Simply tweet your ideas to <a href=\"http://www.example.com\" title=\"This isn't a real twitter account\">@franksroasthouse</a> and use #sandwichcomp and we'll let you know if you're a winner.</p>"
305
- msgstr "<p>Vous avez une idée pour notre prochain sandwich ? Dites-le-nous ! Nous vous offrons des repas gratuits pendant un mois si vous pouvez inventer le nouveau sandwich de notre menu.</p>\n<p></p>\n<p></p>\n<p>Tweetez vos idées à <a href=\"http://www.example.com\" title=\"Ceci n’est pas un compte Twitter réel\">@francksroasthouse</a>, utilisez #sandwichcomp et nous vous tiendrons informé si vous avez gagné.</p>"
306
-
307
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:178
308
- msgid "<h3 style=\"text-align: center;\">Follow Us</h3>"
309
- msgstr "<h3 style=\"text-align: center;\">Suivez-nous</h3>"
310
-
311
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:235
312
- msgid "<h2>New Store Opening!</h2>"
313
- msgstr "<h2>Nouveaux horaires d’ouverture !</h2>"
314
-
315
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:241
316
- msgid "Map"
317
- msgstr "Carte"
318
-
319
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:253
320
- msgid ""
321
- "<p>Watch out Broad Street, we're coming to you very soon! </p>\n"
322
- "<p></p>\n"
323
- "<p>Keep an eye on your inbox, as we'll have some special offers for our email subscribers plus an exclusive launch party invite!<br /><br /></p>"
324
- msgstr "<p>Découvrez Broad Street, nous serons près de chez vous très bientôt !</p>\n<p></p>\n<p>Gardez un œil sur votre boîte de réception car nous allons offrir à nos abonnés une invitation exclusive à notre soirée d’ouverture !<br /><br /></p>"
325
-
326
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:257
327
- msgid ""
328
- "<h2>New and Improved Hours!</h2>\n"
329
- "<p></p>\n"
330
- "<p>Frank's is now open even later, so you can get your caffeine fix all day (and night) long! Here's our new opening hours:</p>\n"
331
- "<p></p>\n"
332
- "<ul>\n"
333
- "<li>Monday - Thursday: 6am - 12am</li>\n"
334
- "<li>Friday - Saturday: 6am - 1:30am</li>\n"
335
- "<li>Sunday: 7:30am - 11pm</li>\n"
336
- "</ul>"
337
- msgstr "<h2>Nouveaux horaires !</h2>\n<p></p>\n<p>Franck reste ouvert plus tard, vous pouvez donc avoir votre dose de caféine toute la journée (et en soirée) ! Voici nos nouveaux horaires d’ouverture :</p>\n<p></p>\n<ul>\n<li>Du lundi au jeudi : 6 h - 12 h</li>\n<li>Les vendredi et samedi : 6 h - 13 h 30</li>\n<li>Le dimanche : 7 h 30 - 23 h</li>\n</ul>"
338
-
339
- #: lib/Config/PopulatorData/Templates/FranksRoastHouseTemplate.php:283
340
- msgid ""
341
- "<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a "
342
- "href=\"[link:subscription_manage_url]\">Manage subscription</a><br />12345 "
343
- "MailPoet Drive, EmailVille, 76543</p>"
344
- msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a><br />12345 MailPoet Drive, EmailVille, 76543</p>"
345
-
346
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:16
347
- msgid "Newsletter: Blank 1:2:1 Column"
348
- msgstr "Newsletter : Vide, Colonne 1:2:1"
349
-
350
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:17
351
- msgid "A blank Newsletter template with a 1:2:1 column layout."
352
- msgstr "Un modèle de newsletter vide avec une mise en page en colonne 1:2:1."
353
-
354
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:55
355
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:55
356
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:55
357
- #: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:55
358
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:55
359
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:55
360
- #: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:55
361
- msgid ""
362
- "Display problems? <a href=\"[link:newsletter_view_in_browser_url]\">Open "
363
- "this email in your web browser.</a>"
364
- msgstr "Problèmes d’affichage ?&nbsp;<a href=\"[link:newsletter_view_in_browser_url]\">Ouvrir cet e-mail dans votre navigateur.</a>"
365
-
366
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:107
367
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:107
368
- #: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:107
369
- #: lib/Config/PopulatorData/Templates/SimpleText.php:66
370
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:107
371
- #: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:107
372
- msgid "Fake logo"
373
- msgstr "Faux logo"
374
-
375
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:119
376
- msgid ""
377
- "<h1 style=\"text-align: center;\"><strong>Let's Get Started!</strong></h1>\n"
378
- "<p>It's time to design your newsletter! In the right sidebar, you'll find four menu items that will help you customize your newsletter:</p>\n"
379
- "<ol>\n"
380
- "<li>Content</li>\n"
381
- "<li>Layout</li>\n"
382
- "<li>Styles</li>\n"
383
- "<li>Preview</li>\n"
384
- "</ol>"
385
- msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
386
-
387
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:157
388
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:157
389
- msgid "<h2>This template has...</h2>"
390
- msgstr "<h2>Ce modèle utilise&hellip;</h2>"
391
-
392
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:161
393
- msgid ""
394
- "<p>In the right sidebar, you can add layout blocks to your email:</p>\n"
395
- "<ul>\n"
396
- "<li>1 column</li>\n"
397
- "<li>2 columns</li>\n"
398
- "<li>3 columns</li>\n"
399
- "</ul>"
400
- msgstr "<p>Dans la colonne latérale de droite, vous pouvez ajouter des blocs de mise en page pour votre e-mail :</p>\n<ul>\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
401
-
402
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:176
403
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:176
404
- msgid "<h2>... a 2-column layout.</h2>"
405
- msgstr "<h2>... une mise en page sur 2 colonnes.</h2>"
406
-
407
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:180
408
- msgid ""
409
- "<p>You can change a layout's background color by clicking on the settings "
410
- "icon on the right edge of the Designer. Simply hover over this area to see "
411
- "the Settings (gear) icon.</p>"
412
- msgstr "<p>Vous pouvez changer la couleur d’arrière-plan d’une mise en page en cliquant sur l’icône des réglages sur la droite du Designer. Survolez simplement cette zone pour voir l’icône des réglages (engrenage).</p>"
413
-
414
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:240
415
- msgid ""
416
- "<h3 style=\"text-align: center;\"><span style=\"font-weight: 600;\">Let's end with a single column. </span></h3>\n"
417
- "<p style=\"line-height: 25.6px;\">In the right sidebar, you can add these layout blocks to your email:</p>\n"
418
- "<p style=\"line-height: 25.6px;\"></p>\n"
419
- "<ul style=\"line-height: 25.6px;\">\n"
420
- "<li>1 column</li>\n"
421
- "<li>2 columns</li>\n"
422
- "<li>3 columns</li>\n"
423
- "</ul>"
424
- msgstr "<h3 style=\"text-align: center;\"><span style=\"font-weight: 600;\">Terminons avec une seule colonne.</span></h3>\n<p style=\"line-height: 25.6px;\">Depuis la colonne latérale de droite, vous pouvez ajouter dans votre e-mail des mises en page en :</p>\n<p style=\"line-height: 25.6px;\"></p>\n<ul style=\"line-height: 25.6px;\">\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
425
-
426
- #: lib/Config/PopulatorData/Templates/NewsletterBlank121Column.php:314
427
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:254
428
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:277
429
- #: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:193
430
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:301
431
- #: lib/Config/PopulatorData/Templates/SimpleText.php:138
432
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:284
433
- #: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:193
434
- msgid ""
435
- "<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a "
436
- "href=\"[link:subscription_manage_url]\">Manage your subscription</a><br "
437
- "/>Add your postal address here!</p>"
438
- msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a><br />Ajoutez votre adresse postale ici !</p>"
439
-
440
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:16
441
- msgid "Newsletter: Blank 1:2 Column"
442
- msgstr "Newsletter : Vide, Colonne 1:2"
443
-
444
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:17
445
- msgid "A blank Newsletter template with a 1:2 column layout."
446
- msgstr "Un modèle de newsletter vide avec une mise en page en colonne 1:2."
447
-
448
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:107
449
- msgid "Fake Logo"
450
- msgstr "Faux logo"
451
-
452
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:119
453
- msgid ""
454
- "<h1 style=\"text-align: center;\"><strong>Let's Get Started!</strong></h1>\n"
455
- "<p></p>\n"
456
- "<p>It's time to design your newsletter! In the right sidebar, you'll find 4 menu items that will help you customize your newsletter:</p>\n"
457
- "<ol>\n"
458
- "<li>Content</li>\n"
459
- "<li>Layout</li>\n"
460
- "<li>Styles</li>\n"
461
- "<li>Preview</li>\n"
462
- "</ol>"
463
- msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p></p>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
464
-
465
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:161
466
- msgid ""
467
- "<p>In the right sidebar, you can add these layout blocks to your email:</p>\n"
468
- "<ul>\n"
469
- "<li>1 column</li>\n"
470
- "<li>2 columns</li>\n"
471
- "<li>3 columns</li>\n"
472
- "</ul>"
473
- msgstr "<p>Dans la colonne latérale de droite, vous pouvez ajouter ces blocs de mise en page dans votre e-mail :</p>\n<ul>\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
474
-
475
- #: lib/Config/PopulatorData/Templates/NewsletterBlank12Column.php:180
476
- msgid ""
477
- "<p><span style=\"line-height: 25.6px;\">You can change a layout's background"
478
- " color by clicking on the settings icon on the right edge of the Designer. "
479
- "Simply hover over this area to see the Settings (gear) icon.</span></p>"
480
- msgstr "<p><span style=\"line-height: 25.6px;\">Vous pouvez changer la couleur d’arrière-plan d’une mise en page en cliquant sur l’icône des réglages sur la droite du Designer. Survolez simplement cette zone pour voir l’icône des réglages (engrenage).</span></p>"
481
-
482
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:16
483
- msgid "Newsletter: Blank 1:3 Column"
484
- msgstr "Newsletter : Vide, Colonne 1:3"
485
-
486
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:17
487
- msgid "A blank Newsletter template with a 1:3 column layout."
488
- msgstr "Un modèle de newsletter vide avec une mise en page en colonne 1:3."
489
-
490
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:119
491
- msgid ""
492
- "<h1 style=\"text-align: center;\"><strong>Let's Get Started! </strong></h1>\n"
493
- "<p></p>\n"
494
- "<p>It's time to design your newsletter! In the right sidebar, you'll find four menu items that will help you customize your newsletter:</p>\n"
495
- "<ol>\n"
496
- "<li>Content</li>\n"
497
- "<li>Layout</li>\n"
498
- "<li>Styles</li>\n"
499
- "<li>Preview</li>\n"
500
- "</ol>"
501
- msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p></p>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
502
-
503
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:157
504
- msgid "<h3>This template... </h3>"
505
- msgstr "<h3>Ce modèle&hellip;</h3>"
506
-
507
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:161
508
- msgid ""
509
- "<p>In the right sidebar, you can add layout blocks to your newsletter.</p>"
510
- msgstr "<p>Dans la colonne latérale de droite vous pouvez ajouter des blocs de mise en page pour votre newsletter.</p>"
511
-
512
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:176
513
- msgid "<h3>... has a... </h3>"
514
- msgstr "<h3>&hellip; utilise une&hellip;</h3>"
515
-
516
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:180
517
- msgid ""
518
- "<p>You have the choice of:</p>\n"
519
- "<ul>\n"
520
- "<li>1 column</li>\n"
521
- "<li>2 columns</li>\n"
522
- "<li>3 columns</li>\n"
523
- "</ul>"
524
- msgstr "<p>Vous avez le choix entre :</p>\n<ul>\n<li>1 colonne</li>\n<li>2 colonnes</li>\n<li>3 colonnes</li>\n</ul>"
525
-
526
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:195
527
- msgid "<h3>3-column layout.</h3>"
528
- msgstr "<h3>une mise en page en 3 colonnes.</h3>"
529
-
530
- #: lib/Config/PopulatorData/Templates/NewsletterBlank13Column.php:199
531
- msgid "<p>You can add as many layout blocks as you want!</p>"
532
- msgstr "<p>Vous pouvez ajouter autant de blocs de mise en page que vous voulez !</p>"
533
-
534
- #: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:16
535
- msgid "Newsletter: Blank 1 Column"
536
- msgstr "Newsletter : Vide, 1 Colonne"
537
-
538
- #: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:17
539
- msgid "A blank Newsletter template with a 1 column layout."
540
- msgstr "Un modèle de newsletter vide avec une mise en page en 1 colonne."
541
-
542
- #: lib/Config/PopulatorData/Templates/NewsletterBlank1Column.php:119
543
- msgid ""
544
- "<h1 style=\"text-align: center;\"><strong>Let's Get Started! </strong></h1>\n"
545
- "<p></p>\n"
546
- "<p>It's time to design your newsletter! In the right sidebar, you'll find 4 menu items that will help you customize your newsletter:</p>\n"
547
- "<ol>\n"
548
- "<li>Content</li>\n"
549
- "<li>Layout</li>\n"
550
- "<li>Styles</li>\n"
551
- "<li>Preview</li>\n"
552
- "</ol>"
553
- msgstr "<h1 style=\"text-align: center;\"><strong>C’est parti !</strong></h1>\n<p></p>\n<p>Il est temps de concevoir votre newsletter ! Dans la colonne latérale de droite vous trouverez 4 éléments de menu qui vous aideront à personnaliser votre newsletter :</p>\n<ol>\n<li>Contenu</li>\n<li>Mise en page</li>\n<li>Styles</li>\n<li>Aperçu</li>\n</ol>"
554
-
555
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:16
556
- msgid "Post Notifications: Blank 1 Column"
557
- msgstr "Notifications d’article : Vide, 1 Colonne"
558
-
559
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:17
560
- msgid "A blank Post Notifications template with a 1 column layout."
561
- msgstr "Un modèle de notifications vide d’article avec une mise en page en 1 colonne."
562
-
563
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:119
564
- msgid ""
565
- "<h1 style=\"text-align: center;\"><strong>Check Out Our New Blog Posts! </strong></h1>\n"
566
- "<p></p>\n"
567
- "<p>MailPoet can <span style=\"line-height: 1.6em; background-color: inherit;\"><em>automatically</em> </span><span style=\"line-height: 1.6em; background-color: inherit;\">send your new blog posts to your subscribers.</span></p>\n"
568
- "<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n"
569
- "<p><span style=\"line-height: 1.6em; background-color: inherit;\">Below, you'll find three recent posts, which are displayed automatically, thanks to the <em>Automatic Latest Content</em> widget, which can be found in the right sidebar, under <em>Content</em>.</span></p>\n"
570
- "<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n"
571
- "<p><span style=\"line-height: 1.6em; background-color: inherit;\">To edit the settings and styles of your post, simply click on a post below.</span></p>"
572
- msgstr "<h1 style=\"text-align: center;\"><strong>Découvrez nos nouveaux articles de blog ! </strong></h1>\n<p></p>\n<p>MailPoet peut <span style=\"line-height: 1.6em; background-color: inherit;\"><em>automatiquement</em> </span><span style=\"line-height: 1.6em; background-color: inherit;\">envoyer vos nouveaux articles de blog à vos abonnés.</span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\">Ci-dessous vous trouverez trois articles récents, qui sont affichés automatiquement, merci au widget de <em>Dernier contenu automatique</em> disponible dans la colonne latérale de droite, sous <em>Contenu</em>.</span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\"></span></p>\n<p><span style=\"line-height: 1.6em; background-color: inherit;\">Pour modifier les réglages et les styles de votre article, cliquez simplement sur un article ci-dessous.</span></p>"
573
-
574
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:177
575
- #: views/newsletter/editor.html:957 views/newsletter/editor.html:1079
576
- msgid "Author:"
577
- msgstr "Auteur :"
578
-
579
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:179
580
- #: views/newsletter/editor.html:959 views/newsletter/editor.html:1081
581
- msgid "Categories:"
582
- msgstr "Catégories :"
583
-
584
- #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:184
585
- msgid "Read the post"
586
- msgstr "Lire l’article"
587
-
588
- #: lib/Config/PopulatorData/Templates/Restaurant.php:16
589
- msgid "Restaurant"
590
- msgstr "Restaurant"
591
-
592
- #: lib/Config/PopulatorData/Templates/Restaurant.php:17
593
- msgid "What's fresh on the menu?"
594
- msgstr "Quoi de nouveau au menu ?"
595
-
596
- #: lib/Config/PopulatorData/Templates/SimpleText.php:16
597
- msgid "Simple Text"
598
- msgstr "Texte simple"
599
-
600
- #: lib/Config/PopulatorData/Templates/SimpleText.php:17
601
- msgid "A simple plain text template - just like a regular email."
602
- msgstr "Un modèle simple d’e-mail en texte brut - comme un e-mail ordinaire."
603
-
604
- #: lib/Config/PopulatorData/Templates/SimpleText.php:78
605
- msgid ""
606
- "<p style=\"text-align: left;\">Hi [subscriber:firstname | default:subscriber],</p>\n"
607
- "<p style=\"text-align: left;\"></p>\n"
608
- "<p style=\"text-align: left;\">In MailPoet, you can write emails in plain text, just like in a regular email. This can make your email newsletters more personal and attention-grabbing.</p>\n"
609
- "<p style=\"text-align: left;\"></p>\n"
610
- "<p style=\"text-align: left;\">Is this too simple? You can still style your text with basic formatting, like <strong>bold</strong> or <em>italics.</em></p>\n"
611
- "<p style=\"text-align: left;\"></p>\n"
612
- "<p style=\"text-align: left;\">Finally, you can also add a call-to-action button between 2 blocks of text, like this:</p>"
613
- msgstr "<p style=\"text-align: left;\">Bonjour [subscriber:firstname | default:abonné],</p>\n<p style=\"text-align: left;\"></p>\n<p style=\"text-align: left;\">Dans MailPoet, vous pouvez rédiger des e-mails en texte brut, comme un e-mail ordinaire. Ceci peut rendre votre e-mail de newsletter plus personnel et attractif.</p>\n<p style=\"text-align: left;\"></p>\n<p style=\"text-align: left;\">Cela reste trop simple ? Vous pouvez toujours personnaliser votre texte avec du formatage simple comme du <strong>gras</strong> ou de l’<em>italique.</em></p>\n<p style=\"text-align: left;\"></p>\n<p style=\"text-align: left;\">Enfin, vous pouvez ajouter un bouton d’appel à l’action entre deux blocs de texte, comme ceci :</p>"
614
-
615
- #: lib/Config/PopulatorData/Templates/SimpleText.php:113
616
- msgid "It's time to take action!"
617
- msgstr "C’est le moment de passer à l’action !"
618
-
619
- #: lib/Config/PopulatorData/Templates/SimpleText.php:134
620
- msgid ""
621
- "<p>Thanks for reading. See you soon!</p>\n"
622
- "<p></p>\n"
623
- "<p><strong><em>The MailPoet Team</em></strong></p>"
624
- msgstr "<p>Merci pour votre attention et à très bientôt !</p>\n<p></p>\n<p><strong><em>L’équipe MailPoet</em></strong></p>"
625
-
626
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:16
627
- msgid "Store Discount"
628
- msgstr "Opération solde"
629
-
630
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:17
631
- msgid "Store discount email with coupon and shopping suggestions"
632
- msgstr "E-mail de promotion et de suggestions d’achat dans un magasin"
633
-
634
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:62
635
- msgid "bicycle-header3"
636
- msgstr "velo-en-tete3"
637
-
638
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:73
639
- msgid ""
640
- "<p></p>\n"
641
- "<p>Hi [subscriber:firstname | default:reader]</p>\n"
642
- "<p class=\"\"></p>\n"
643
- "<p>Fancy 15% off your next order? Use this coupon on any product in our store. Expires Wednesday! To apply the discount, enter the code on the payments page.</p>"
644
- msgstr "<p></p>\n<p>Bonjour [subscriber:firstname | default:lecteur]</p>\n<p class=\"\"></p>\n<p>15% de remise sur votre prochaine commande ? Utilisez ce code promo sur le produit de votre choix dans notre magasin. Fin de l’opération vendredi ! Pour appliquer la remise, saisissez le code sur la page des paiements.</p>"
645
-
646
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:113
647
- msgid ""
648
- "<h1 style=\"text-align: center;\"><em><strong>Get a 15% off your next "
649
- "order</strong></em></h1>"
650
- msgstr "<h1 style=\"text-align: center;\"><em><strong>Obtenez 15% de remise sur votre prochaine commande</strong></em></h1>"
651
-
652
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:116
653
- msgid ""
654
- "<h2 style=\"text-align: center;\"><strong>USE CODE: "
655
- "WELOVEMAILPOET</strong></h2>"
656
- msgstr "<h2 style=\"text-align: center;\"><strong>UTILISEZ LE CODE : WELOVEMAILPOET</strong></h2>"
657
-
658
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:156
659
- msgid "SHOP NOW"
660
- msgstr "ACHETEZ MAINTENANT"
661
-
662
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:176
663
- msgid ""
664
- "<h1 style=\"text-align: center;\"><strong><em>Use your discount on these "
665
- "great products...</em></strong></h1>"
666
- msgstr "<h1 style=\"text-align: center;\"><strong><em>Utilisez votre remise sur ces superbes produits&hellip;</em></strong></h1>"
667
-
668
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:207
669
- msgid "red-bicycle"
670
- msgstr "velo-rouge"
671
-
672
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:218
673
- msgid ""
674
- "<h3 style=\"text-align: center;\">Lovely Red Bicycle</h3>\n"
675
- "<p>What can we say? It's a totally awesome red bike, and it's the first of its kind in our collection. No sweat!</p>\n"
676
- "<h3 style=\"text-align: center;\"><strong><span style=\"color: #488e88;\">$289.99</span></strong></h3>"
677
- msgstr "<h3 style=\"text-align: center;\">Joli vélo rouge</h3>\n<p>Que dire ? C’est un superbe vélo rouge et c’est le premier de notre collection.</p>\n<h3 style=\"text-align: center;\"><strong><span style=\"color: #488e88;\">289.99 €</span></strong></h3>"
678
-
679
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:221
680
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:266
681
- msgid "Buy"
682
- msgstr "Acheter"
683
-
684
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:252
685
- msgid "orange-bicycle"
686
- msgstr "velo-orange"
687
-
688
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:263
689
- msgid ""
690
- "<h3 style=\"text-align: center;\">Little Orange Bicycle</h3>\n"
691
- "<p>Another product that's just as awesome but it's the second type, and more orange, with some blue. Cool beans!</p>\n"
692
- "<h3 style=\"line-height: 22.4px; text-align: center;\"><span style=\"color: #488e88;\"><strong>$209.99</strong></span></h3>"
693
- msgstr "<h3 style=\"text-align: center;\">Petit vélo orange</h3>\n<p>Un autre produit qui est tout aussi intéressant, plus orange avec un peu de bleu. Vous allez l’adorer</p>\n<h3 style=\"line-height: 22.4px; text-align: center;\"><span style=\"color: #488e88;\"><strong>209.99 €</strong></span></h3>"
694
-
695
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:323
696
- msgid ""
697
- "<p><em>Terms and Conditions:</em></p>\n"
698
- "<ul>\n"
699
- "<li><span style=\"line-height: 1.6em; background-color: inherit;\">Must be used by midnight EST December 15 2016.</span></li>\n"
700
- "<li><span style=\"line-height: 1.6em; background-color: inherit;\">Discount does not include shipping.</span></li>\n"
701
- "<li><span style=\"line-height: 1.6em; background-color: inherit;\">Cannot be used in conjunction with any other offer.</span></li>\n"
702
- "</ul>"
703
- msgstr "<p><em>Conditions d’utilisation :</em></p>\n<ul>\n<li><span style=\"line-height: 1.6em; background-color: inherit;\">Doit être utilisé avant minuit le 15 décembre 2016.</span></li>\n<li><span style=\"line-height: 1.6em; background-color: inherit;\">La remise n’inclut pas les frais de livraison.</span></li>\n<li><span style=\"line-height: 1.6em; background-color: inherit;\">Ne peut pas être utilisé avec une autre offre.</span></li>\n</ul>"
704
-
705
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:334
706
- #: views/newsletter/editor.html:1132
707
- msgid "Facebook"
708
- msgstr "Facebook"
709
-
710
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:342
711
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:84
712
- #: views/newsletter/editor.html:1143
713
- msgid "Twitter"
714
- msgstr "Twitter"
715
-
716
- #: lib/Config/PopulatorData/Templates/StoreDiscount.php:346
717
- msgid ""
718
- "<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a href=\"[link:subscription_manage_url]\">Manage subscription</a></p>\n"
719
- "<p>1 Store Street, Shopville, CA 1345</p>"
720
- msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a></p>\n<p>1 rue de la Boutique, Achatville, CA 1345</p>"
721
-
722
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:16
723
- msgid "Travel email"
724
- msgstr "E-mail de voyage"
725
-
726
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:17
727
- msgid "A little postcard from your trip"
728
- msgstr "Une petite carte postale de notre voyage"
729
-
730
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:54
731
- msgid "Travelling Tales with Jane & Steven"
732
- msgstr "Récits de voyage avec Jane & Steven"
733
-
734
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:73
735
- msgid ""
736
- "<h1 style=\"text-align: center;\">Hi [subscriber:firstname | default:reader]!</h1>\n"
737
- "<p></p>\n"
738
- "<p>Greetings from New Zealand! We're here enjoying the sights, sounds, and smells of Rotarua! Yesterday, we visited the local hot springs, and today, we're going swimming.</p>\n"
739
- "<p>Don't forget to stay updated with Twitter!</p>"
740
- msgstr "<h1 style=\"text-align: center;\">Bonjour [subscriber:firstname | default:lecteur] !</h1>\n<p></p>\n<p>Bonjour de Nouvelle-Zélande ! Nous sommes à Roturua et apprécions ses paysages, ambiances et odeurs ! Hier, nous avons visité les sources thermales locales, et aujourd’hui, nous sommes aller nager.</p>\n<p>N’oubliez pas de nous suivre sur Twitter !</p>"
741
-
742
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:88
743
- msgid ""
744
- "<h1 style=\"text-align: center;\"><strong>Photos from Rotarua</strong></h1>"
745
- msgstr "<h1 style=\"text-align: center;\"><strong>Photos de Rotarua</strong></h1>"
746
-
747
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:119
748
- msgid "hot thermals"
749
- msgstr "thermes chaudes"
750
-
751
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:149
752
- msgid "The view from our campsite"
753
- msgstr "La vue depuis notre camping"
754
-
755
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:188
756
- msgid "Red sky at night"
757
- msgstr "Ciel rouge la nuit"
758
-
759
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:210
760
- msgid "Don't go chasing waterfalls"
761
- msgstr "Don't go chasing waterfalls"
762
-
763
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:247
764
- msgid "View NZ Photo Gallery"
765
- msgstr "Voir la galerie photo de NZ"
766
-
767
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:296
768
- msgid "<h2><em>Here's our top recommendations in Rotarua</em></h2>"
769
- msgstr "<h2><em>Voici nos meilleures recommandations dans Rotarua</em></h2>"
770
-
771
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:327
772
- msgid "Glowworms, Waitomo Caves"
773
- msgstr "Vers luisants, grottes de Waitomo"
774
-
775
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:338
776
- msgid ""
777
- "<p><em><a href=\"http://www.waitomo.com/Waitomo-Glowworm-"
778
- "Caves/Pages/default.aspx\"><strong>Waitomo GlowWorm "
779
- "Caves</strong></a></em></p>"
780
- msgstr "<p><em><a href=\"http://www.waitomo.com/Waitomo-Glowworm-Caves/Pages/default.aspx\"><strong>Grottes aux vers luisants de Waitomo</strong></a></em></p>"
781
-
782
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:352
783
- msgid "luge"
784
- msgstr "luge"
785
-
786
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:363
787
- msgid ""
788
- "<p><em><strong><a "
789
- "href=\"http://www.skyline.co.nz/rotorua/ssr_luge/\">Luge!</a></strong></em></p>"
790
- msgstr "<p><em><strong><a href=\"http://www.skyline.co.nz/rotorua/ssr_luge/\">Luge !</a></strong></em></p>"
791
-
792
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:377
793
- msgid "holiday-park"
794
- msgstr "parc-vacances"
795
-
796
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:388
797
- msgid ""
798
- "<p><em><strong><a href=\"http://rotoruathermal.co.nz/\">Roturua Thermal "
799
- "Holiday Park</a></strong></em></p>"
800
- msgstr "<p><em><strong><a href=\"http://rotoruathermal.co.nz/\">Centre thermal de Roturua</a></strong></em></p>"
801
-
802
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:417
803
- msgid ""
804
- "<p>Tomorrow we're heading towards Taupo where we'll visit the 'Craters of the moon' and go prawn fishing! Hopefully the weather will stay good.</p>\n"
805
- "<p></p>\n"
806
- "<p>Keep on travellin'</p>\n"
807
- "<p>Jane &amp; Steven</p>"
808
- msgstr "<p>Demain, nous irons à Taupo où nous visiterons les « Cratères de la Lune ». Ensuite direction la pêche aux crevettes ! Nous espérons que la météo restera de la partie.</p>\n<p></p>\n<p>En route</p>\n<p>Jane &amp; Steven</p>"
809
-
810
- #: lib/Config/PopulatorData/Templates/TravelEmail.php:467
811
- msgid ""
812
- "<p><a href=\"[link:subscription_unsubscribe_url]\">Unsubscribe</a> | <a "
813
- "href=\"[link:subscription_manage_url]\">Manage subscription</a></p>"
814
- msgstr "<p><a href=\"[link:subscription_unsubscribe_url]\">Se désabonner</a> | <a href=\"[link:subscription_manage_url]\">Gérer votre abonnement</a></p>"
815
-
816
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:16
817
- msgid "Welcome Email: Blank 1:2 Column"
818
- msgstr "E-mail de bienvenue : Vide, Colonne 1:2"
819
-
820
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:17
821
- msgid "A blank Welcome Email template with a 1:2 column layout."
822
- msgstr "Un modèle d’e-mail de bienvenue vide avec une mise en page en colonne 1:2."
823
-
824
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:119
825
- msgid ""
826
- "<h1 style=\"text-align: center;\"><strong>Hi, new subscriber!</strong></h1>\n"
827
- "<p></p>\n"
828
- "<p>[subscriber:firstname | default:Subscriber],</p>\n"
829
- "<p></p>\n"
830
- "<p>You recently joined our list and we'd like to give you a warm welcome!</p>"
831
- msgstr "<h1 style=\"text-align: center;\"><strong>Bonjour !</strong></h1>\n<p></p>\n<p>[subscriber:firstname | default:Abonné],</p>\n<p></p>\n<p>Vous avez récemment rejoint notre liste et nous vous souhaitons la bienvenue !</p>"
832
-
833
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:166
834
- msgid "<h3>Our Most Popular Posts</h3>"
835
- msgstr "<h3>Nos articles les plus populaires</h3>"
836
-
837
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:170
838
- msgid ""
839
- "<ul>\n"
840
- "<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">The Importance of Focus When Writing</a></li>\n"
841
- "<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">How to Write a Great Subject Line</a></li>\n"
842
- "<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Just Sit Down and Write &ndash; Advice on Motivation from Ernest Hemingway</a></li>\n"
843
- "</ul>"
844
- msgstr "<ul>\n<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">L’importance de la concentration pendant la rédaction</a></li>\n<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">Comment rédiger une bonne ligne de sujet</a></li>\n<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Installez-vous et écrivez &ndash; Conseil sur la motivation par Ernest Hemingway</a></li>\n</ul>"
845
-
846
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:185
847
- msgid "<h3>What's Next?</h3>"
848
- msgstr "<h3>Et ensuite ?</h3>"
849
-
850
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:189
851
- msgid ""
852
- "<p>Add a single button to your newsletter in order to have one clear call-"
853
- "to-action, which will increase your click rates.</p>"
854
- msgstr "<p>Ajoutez un seul bouton à votre newsletter afin de créer un appel à action clair, ce qui augmentera votre taux de clic.</p>"
855
-
856
- #: lib/Config/PopulatorData/Templates/WelcomeBlank12Column.php:193
857
- msgid "Read up!"
858
- msgstr "Renseignez vous !"
859
-
860
- #: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:16
861
- msgid "Welcome Email: Blank 1 Column"
862
- msgstr "E-mail de bienvenue : Vide, 1 Colonne"
863
-
864
- #: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:17
865
- msgid "A blank Welcome Email template with a 1 column layout."
866
- msgstr "Un modèle d’e-mail de bienvenue vide avec une mise en page en 1 colonne."
867
-
868
- #: lib/Config/PopulatorData/Templates/WelcomeBlank1Column.php:119
869
- msgid ""
870
- "<h1 style=\"text-align: center;\"><strong>Hi, new subscriber!</strong></h1>\n"
871
- "<p></p>\n"
872
- "<p>[subscriber:firstname | default:Subscriber],</p>\n"
873
- "<p></p>\n"
874
- "<p>You recently joined our list and we'd like to give you a warm welcome!</p>\n"
875
- "<p></p>\n"
876
- "<p>Want to get to know us better? Check out some of our most popular articles: </p>\n"
877
- "<ol>\n"
878
- "<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">The Importance of Focus When Writing</a></li>\n"
879
- "<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">How to Write a Great Subject Line</a></li>\n"
880
- "<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Just Sit Down and Write &ndash; Advice on Motivation from Ernest Hemingway</a></li>\n"
881
- "</ol>"
882
- msgstr "<h1 style=\"text-align: center;\"><strong>Bonjour !</strong></h1>\n<p></p>\n<p>[subscriber:firstname | default:Abonné],</p>\n<p></p>\n<p>Vous avez récemment rejoint notre liste et nous vous souhaitons la bienvenue !</p>\n<p></p>\n<p>Vous voulez mieux nous connaître ? Découvrez quelques-uns de nos articles les plus populaires :</p>\n<ol>\n<li><a href=\"http://www.mailpoet.com/the-importance-of-focus-when-writing/\">L’importance de la concentration pendant la rédaction</a></li>\n<li><a href=\"http://www.mailpoet.com/write-great-subject-line/\">Comment rédiger une bonne ligne de sujet</a></li>\n<li><a href=\"http://www.mailpoet.com/just-sit-write-advice-motivation-ernest-hemingway/\">Installez-vous et écrivez &ndash; Conseil sur la motivation par Ernest Hemingway</a></li>\n</ol>"
883
-
884
- #: lib/Config/Renderer.php:88
885
- msgid ""
886
- "Failed to render template \"%s\". Please ensure the template cache folder "
887
- "\"%s\" exists and has write permissions. Terminated with error: \"%s\""
888
- msgstr "Erreur de rendu du modèle « %s ». Veuillez vous assurer que le répertoire de cache du modèle « %s » existe et que des permissions d’écriture lui sont accordées. Terminé avec l’erreur : « %s »"
889
-
890
- #: lib/Config/RequirementsChecker.php:64
891
- msgid ""
892
- "This plugin requires write permissions inside the /wp-content/uploads "
893
- "folder. Please read our [link]instructions[/link] on how to resolve this "
894
- "issue."
895
- msgstr "Cette extension nécessite des permissions en écriture sur le répertoire /wp-content/uploads. Veuillez lire nos [link]instructions[/link] sur la façon de corriger ce problème."
896
-
897
- #: lib/Config/RequirementsChecker.php:84
898
- msgid ""
899
- "This plugin requires the PDO_MYSQL PHP extension. Please read our "
900
- "[link]instructions[/link] on how to resolve this issue."
901
- msgstr "Cette extension nécessite l’extension PDO_MYSQL_PHP. Veuillez lire nos [link]instructions[/link] sur la façon de corriger ce problème."
902
-
903
- #: lib/Config/RequirementsChecker.php:102
904
- msgid ""
905
- "A MailPoet dependency (%s) does not appear to be loaded correctly, thus "
906
- "MailPoet will not work correctly. Please reinstall the plugin."
907
- msgstr "Une dépendance de MailPoet (%s) ne semble pas être correctement chargée, MailPoet ne fonctionnera pas correctement. Veuillez réinstaller l’extension."
908
-
909
- #: lib/Config/RequirementsChecker.php:113
910
- msgid ""
911
- "MailPoet has detected a dependency conflict (%s) with another plugin (%s), "
912
- "which may cause unexpected behavior. Please disable the offending plugin to "
913
- "fix this issue."
914
- msgstr "MailPoet a détecté un conflit de dépendance (%s) avec une autre extension (%s) ce qui peut causer un comportement inattendu. Veuillez désactiver l’extension en cause pour corriger ce problème."
915
-
916
- #: lib/Config/ServicesChecker.php:25
917
- msgid ""
918
- "All sending is currently paused! Your key to send with MailPoet is invalid. "
919
- "[link]Visit MailPoet.com to purchase a key[/link]"
920
- msgstr "Tous les envois sont actuellement suspendus ! Votre clé pour envoyer avec MailPoet n’est pas valide. [link]Rendez-vous sur MailPoet.com pour acheter une clé[/link]"
921
-
922
- #: lib/Config/ServicesChecker.php:37
923
- msgid ""
924
- "Your newsletters are awesome! Don't forget to [link]upgrade your MailPoet "
925
- "email plan[/link] by %s to keep sending them to your subscribers."
926
- msgstr "Vos newsletters sont formidables ! N’oubliez pas de [link]mettre à jour votre formule d’e-mail MailPoet[/link] par %s pour continuer à les envoyer à vos abonnés."
927
-
928
- #: lib/Config/Shortcodes.php:85
929
- msgid "Oops! There are no newsletters to display."
930
- msgstr "Aie ! Il n’y a aucune newsletter à afficher."
931
-
932
- #: lib/Config/Shortcodes.php:125
933
- msgid "Preview in a new tab"
934
- msgstr "Aperçu dans un nouvel onglet"
935
-
936
- #: lib/Cron/CronHelper.php:99
937
- msgid "Site URL is unreachable."
938
- msgstr "L’URL du site est inaccessible."
939
-
940
- #: lib/Cron/CronHelper.php:105
941
- msgid "Maximum execution time has been reached."
942
- msgstr "Le temps maximum d’exécution a été atteint."
943
-
944
- #: lib/Cron/Daemon.php:31
945
- msgid "Invalid or missing request data."
946
- msgstr "Données de requête non valides ou manquantes."
947
-
948
- #: lib/Cron/Daemon.php:34
949
- msgid "Daemon does not exist."
950
- msgstr "Le démon n’existe pas."
951
-
952
- #: lib/Form/Block/Base.php:10
953
- msgid "Please specify a valid email address."
954
- msgstr "Veuillez spécifier une adresse de messagerie valide."
955
-
956
- #: lib/Form/Block/Base.php:18 views/form/editor.html:55
957
- #: views/newsletters.html:153
958
- msgid "Please select a list"
959
- msgstr "Veuillez sélectionner une liste"
960
-
961
- #: lib/Form/Block/Base.php:28
962
- msgid "Please specify a valid phone number"
963
- msgstr "Veuillez spécifier un numéro de téléphone valide"
964
-
965
- #: lib/Form/Block/Base.php:37
966
- msgid "Please select at least one option"
967
- msgstr "Veuillez sélectionner au moins une option"
968
-
969
- #: lib/Form/Block/Date.php:75
970
- msgid "Please select a day"
971
- msgstr "Veuillez sélectionner un jour"
972
-
973
- #: lib/Form/Block/Date.php:77 lib/Form/Block/Date.php:199
974
- #: views/form/templates/blocks/date_days.hbs:3 views/settings/bounce.html:252
975
- #: views/subscribers/subscribers.html:88
976
- msgid "Day"
977
- msgstr "Jour"
978
-
979
- #: lib/Form/Block/Date.php:84
980
- msgid "Please select a month"
981
- msgstr "Veuillez sélectionner un mois"
982
-
983
- #: lib/Form/Block/Date.php:86 lib/Form/Block/Date.php:143
984
- #: views/form/templates/blocks/date_months.hbs:3
985
- #: views/subscribers/subscribers.html:87
986
- msgid "Month"
987
- msgstr "Mois"
988
-
989
- #: lib/Form/Block/Date.php:93
990
- msgid "Please select a year"
991
- msgstr "Veuillez sélectionner une année"
992
-
993
- #: lib/Form/Block/Date.php:95 lib/Form/Block/Date.php:111
994
- #: lib/Form/Block/Date.php:173
995
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:74
996
- #: views/form/templates/blocks/date_years.hbs:5
997
- #: views/subscribers/subscribers.html:86
998
- msgid "Year"
999
- msgstr "Année"
1000
-
1001
- #: lib/Form/Block/Date.php:108
1002
- msgid "Year, month, day"
1003
- msgstr "Année, mois, jour"
1004
-
1005
- #: lib/Form/Block/Date.php:109
1006
- msgid "Year, month"
1007
- msgstr "Année, mois"
1008
-
1009
- #: lib/Form/Block/Date.php:110
1010
- msgid "Month (January, February,...)"
1011
- msgstr "Mois (janvier, février&hellip;)"
1012
-
1013
- #: lib/Form/Block/Date.php:124 views/newsletters.html:175
1014
- #: views/subscribers/importExport/import.html:56
1015
- msgid "January"
1016
- msgstr "janvier"
1017
-
1018
- #: lib/Form/Block/Date.php:124 views/newsletters.html:176
1019
- #: views/subscribers/importExport/import.html:57
1020
- msgid "February"
1021
- msgstr "février"
1022
-
1023
- #: lib/Form/Block/Date.php:124 views/newsletters.html:177
1024
- #: views/subscribers/importExport/import.html:58
1025
- msgid "March"
1026
- msgstr "mars"
1027
-
1028
- #: lib/Form/Block/Date.php:124 views/newsletters.html:178
1029
- #: views/subscribers/importExport/import.html:59
1030
- msgid "April"
1031
- msgstr "avril"
1032
-
1033
- #: lib/Form/Block/Date.php:125 views/newsletters.html:179
1034
- #: views/newsletters.html:191 views/subscribers/importExport/import.html:60
1035
- msgid "May"
1036
- msgstr "mai"
1037
-
1038
- #: lib/Form/Block/Date.php:125 views/newsletters.html:180
1039
- #: views/subscribers/importExport/import.html:61
1040
- msgid "June"
1041
- msgstr "juin"
1042
-
1043
- #: lib/Form/Block/Date.php:125 views/newsletters.html:181
1044
- #: views/subscribers/importExport/import.html:62
1045
- msgid "July"
1046
- msgstr "juillet"
1047
-
1048
- #: lib/Form/Block/Date.php:125 views/newsletters.html:182
1049
- #: views/subscribers/importExport/import.html:63
1050
- msgid "August"
1051
- msgstr "août"
1052
-
1053
- #: lib/Form/Block/Date.php:125 views/newsletters.html:183
1054
- #: views/subscribers/importExport/import.html:64
1055
- msgid "September"
1056
- msgstr "septembre"
1057
-
1058
- #: lib/Form/Block/Date.php:126 views/newsletters.html:184
1059
- #: views/subscribers/importExport/import.html:65
1060
- msgid "October"
1061
- msgstr "octobre"
1062
-
1063
- #: lib/Form/Block/Date.php:126 views/newsletters.html:185
1064
- #: views/subscribers/importExport/import.html:66
1065
- msgid "November"
1066
- msgstr "novembre"
1067
-
1068
- #: lib/Form/Block/Date.php:126 views/newsletters.html:186
1069
- #: views/subscribers/importExport/import.html:67
1070
- msgid "December"
1071
- msgstr "décembre"
1072
-
1073
- #: lib/Form/Util/Export.php:55
1074
- msgid "BEGIN Scripts: you should place them in the header of your theme"
1075
- msgstr "DÉBUT des scripts : vous devez les placer dans l’en-tête de votre thème "
1076
-
1077
- #: lib/Form/Util/Export.php:87
1078
- msgid "END Scripts"
1079
- msgstr "Fin des scripts"
1080
-
1081
- #: lib/Form/Widget.php:14
1082
- msgid "MailPoet Form"
1083
- msgstr "Formulaire MailPoet"
1084
-
1085
- #: lib/Form/Widget.php:16
1086
- msgid "Add a newsletter subscription form"
1087
- msgstr "Ajouter un formulaire d’abonnement de newsletter"
1088
-
1089
- #: lib/Form/Widget.php:39
1090
- msgid "Subscribe to Our Newsletter"
1091
- msgstr "Abonnez-vous à notre newsletter"
1092
-
1093
- #: lib/Form/Widget.php:54
1094
- msgid "Title:"
1095
- msgstr "Titre :"
1096
-
1097
- #: lib/Form/Widget.php:74
1098
- msgid "Create a new form"
1099
- msgstr "Créer un nouveau formulaire"
1100
-
1101
- #: lib/Mailer/Mailer.php:83
1102
- msgid "Mailing method does not exist."
1103
- msgstr "La méthode de publipostage n’existe pas."
1104
-
1105
- #: lib/Mailer/Mailer.php:91
1106
- msgid "Mailer is not configured."
1107
- msgstr "Le mailer n’est pas configuré."
1108
-
1109
- #: lib/Mailer/Mailer.php:108
1110
- msgid "Sender name and email are not configured."
1111
- msgstr "Le nom et l’e-mail de l’expéditeur ne sont pas configurés."
1112
-
1113
- #: lib/Mailer/MailerLog.php:51
1114
- msgid "Sending has been paused."
1115
- msgstr "L’envoi a été suspendu."
1116
-
1117
- #: lib/Mailer/MailerLog.php:55
1118
- msgid "Sending is waiting to be retried."
1119
- msgstr "L’envoi est en attente de nouvel essai."
1120
-
1121
- #: lib/Mailer/MailerLog.php:63
1122
- msgid "Sending frequency limit has been reached."
1123
- msgstr "La limite de fréquence d’envoi a été atteinte."
1124
-
1125
- #: lib/Mailer/Methods/AmazonSES.php:35
1126
- msgid "Unsupported Amazon SES region"
1127
- msgstr "Région Amazon SES non supportée."
1128
-
1129
- #: lib/Mailer/Methods/AmazonSES.php:64 lib/Mailer/Methods/PHPMail.php:33
1130
- #: lib/Mailer/Methods/SMTP.php:47 lib/Mailer/Methods/SendGrid.php:32
1131
- msgid "%s has returned an unknown error."
1132
- msgstr "%s a retourné une erreur inconnue."
1133
-
1134
- #: lib/Mailer/Methods/MailPoet.php:26
1135
- msgid "MailPoet API key is invalid!"
1136
- msgstr "Votre clé MailPoet n’est pas valide !"
1137
-
1138
- #: lib/Models/CustomField.php:14 lib/Models/Form.php:13
1139
- #: lib/Models/NewsletterOptionField.php:12
1140
- #: lib/Models/NewsletterTemplate.php:13 lib/Models/Segment.php:13
1141
- #: lib/Models/Setting.php:22
1142
- msgid "Please specify a name."
1143
- msgstr "Veuillez spécifier un nom."
1144
-
1145
- #: lib/Models/CustomField.php:17 lib/Models/Newsletter.php:27
1146
- msgid "Please specify a type."
1147
- msgstr "Veuillez spécifier un type."
1148
-
1149
- #: lib/Models/Form.php:93 lib/Models/Newsletter.php:464
1150
- #: lib/Models/Segment.php:126 lib/Models/Subscriber.php:343
1151
- msgid "All"
1152
- msgstr "Toutes"
1153
-
1154
- #: lib/Models/Form.php:98 lib/Models/Newsletter.php:534
1155
- #: lib/Models/Segment.php:131 lib/Models/Subscriber.php:368
1156
- #: views/forms.html:56 views/newsletters.html:75 views/segments.html:50
1157
- #: views/subscribers/subscribers.html:34
1158
- msgid "Trash"
1159
- msgstr "Corbeille"
1160
-
1161
- #: lib/Models/Model.php:53
1162
- #: views/subscribers/importExport/import/step2.html:140
1163
- msgid "Another record already exists. Please specify a different \"%1$s\"."
1164
- msgstr "Un autre enregistrement existe déjà. Veuillez spécifier un « %1$s » différent."
1165
-
1166
- #: lib/Models/Newsletter.php:229
1167
- msgid "Deleted list"
1168
- msgstr "Liste supprimée"
1169
-
1170
- #: lib/Models/Newsletter.php:365 lib/Models/Subscriber.php:279
1171
- #: lib/Subscribers/ImportExport/Export/Export.php:170
1172
- msgid "All Lists"
1173
- msgstr "Toutes les listes"
1174
-
1175
- #: lib/Models/Newsletter.php:476
1176
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:12
1177
- msgid "Draft"
1178
- msgstr "Brouillon"
1179
-
1180
- #: lib/Models/Newsletter.php:484
1181
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:11
1182
- msgid "Scheduled"
1183
- msgstr "Planifié"
1184
-
1185
- #: lib/Models/Newsletter.php:492
1186
- msgid "Sending"
1187
- msgstr "En cours d’envoi"
1188
-
1189
- #: lib/Models/Newsletter.php:500
1190
- msgid "Sent"
1191
- msgstr "Envoyé"
1192
-
1193
- #: lib/Models/Newsletter.php:514 views/newsletters.html:83
1194
- msgid "Active"
1195
- msgstr "Activé"
1196
-
1197
- #: lib/Models/Newsletter.php:522
1198
- msgid "Not active"
1199
- msgstr "Désactivé"
1200
-
1201
- #: lib/Models/NewsletterOptionField.php:15
1202
- msgid "Please specify a newsletter type."
1203
- msgstr "Veuillez spécifier un type de newsletter."
1204
-
1205
- #: lib/Models/NewsletterTemplate.php:16
1206
- msgid "The template body cannot be empty."
1207
- msgstr "Le corps du modèle ne peut pas être vide."
1208
-
1209
- #: lib/Models/Segment.php:107 views/subscribers/subscribers.html:82
1210
- msgid "WordPress Users"
1211
- msgstr "Utilisateurs WordPress"
1212
-
1213
- #: lib/Models/Segment.php:109
1214
- msgid "This list contains all of your WordPress users."
1215
- msgstr "Cette liste contient tous vos utilisateurs WordPress."
1216
-
1217
- #: lib/Models/Segment.php:193
1218
- msgid "Not in a List"
1219
- msgstr "Dans aucune liste"
1220
-
1221
- #: lib/Models/Setting.php:48
1222
- msgid "Confirm your subscription to %1$s"
1223
- msgstr "Confirmation de votre abonnement à %1$s"
1224
-
1225
- #: lib/Models/Setting.php:49
1226
- msgid ""
1227
- "Hello!\n"
1228
- "\n"
1229
- "Hurray! You've subscribed to our site.\n"
1230
- "\n"
1231
- "Please confirm your subscription to the list(s): [lists_to_confirm] by clicking the link below: \n"
1232
- "\n"
1233
- "[activation_link]Click here to confirm your subscription.[/activation_link]\n"
1234
- "\n"
1235
- "Thank you,\n"
1236
- "\n"
1237
- "The Team"
1238
- msgstr "Bonjour ! \n\nFélicitations ! Vous êtes abonné(e) à notre site.\n\nVous devez cependant activer votre abonnement à [lists_to_confirm] en cliquant sur le lien ci-dessous : \n\n[activation_link]Cliquez ici pour confirmer votre abonnement.[/activation_link]\n\nMerci, \n\nL’équipe !"
1239
-
1240
- #: lib/Models/Subscriber.php:24
1241
- msgid "Please enter your email address"
1242
- msgstr "Veuillez saisir votre adresse e-mail."
1243
-
1244
- #: lib/Models/Subscriber.php:25
1245
- msgid "Your email address is invalid!"
1246
- msgstr "Votre adresse e-mail n’est pas valide !"
1247
-
1248
- #: lib/Models/Subscriber.php:193
1249
- msgid "You need to wait before subscribing again."
1250
- msgstr "Vous devez attendre avant de vous abonner à nouveau."
1251
-
1252
- #: lib/Models/Subscriber.php:287
1253
- msgid "Subscribers without a list (%s)"
1254
- msgstr "Abonnés dans aucune liste (%s)"
1255
-
1256
- #: lib/Models/Subscriber.php:348 lib/Subscription/Pages.php:289
1257
- #: views/segments.html:30 views/subscribers/subscribers.html:52
1258
- msgid "Subscribed"
1259
- msgstr "Abonné"
1260
-
1261
- #: lib/Models/Subscriber.php:353 views/segments.html:31
1262
- #: views/subscribers/subscribers.html:51
1263
- msgid "Unconfirmed"
1264
- msgstr "Non confirmé"
1265
-
1266
- #: lib/Models/Subscriber.php:358 lib/Subscription/Pages.php:297
1267
- #: views/segments.html:32 views/subscribers/subscribers.html:53
1268
- msgid "Unsubscribed"
1269
- msgstr "Désabonné"
1270
-
1271
- #: lib/Models/Subscriber.php:363 lib/Subscription/Pages.php:305
1272
- #: views/segments.html:33 views/subscribers/subscribers.html:54
1273
- msgid "Bounced"
1274
- msgstr "Retourné"
1275
-
1276
- #: lib/Newsletter/Editor/PostContentManager.php:81
1277
- msgid "Click here to view media."
1278
- msgstr "Cliquez-ici pour voir le média."
1279
-
1280
- #: lib/Newsletter/Shortcodes/Categories/Link.php:32
1281
- #: views/newsletter/editor.html:1037
1282
- msgid "Unsubscribe"
1283
- msgstr "Se désabonner"
1284
-
1285
- #: lib/Newsletter/Shortcodes/Categories/Link.php:53
1286
- #: views/newsletter/editor.html:1037
1287
- msgid "Manage subscription"
1288
- msgstr "Gestion de l’abonnement"
1289
-
1290
- #: lib/Newsletter/Shortcodes/Categories/Link.php:77
1291
- msgid "View in your browser"
1292
- msgstr "Afficher dans votre navigateur"
1293
-
1294
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:10
1295
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:95
1296
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:96
1297
- #: views/subscribers/subscribers.html:60
1298
- msgid "Subscriber"
1299
- msgstr "Abonné"
1300
-
1301
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:12
1302
- msgid "First Name"
1303
- msgstr "Prénom"
1304
-
1305
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:16
1306
- msgid "Last Name"
1307
- msgstr "Nom"
1308
-
1309
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:20
1310
- msgid "Email Address"
1311
- msgstr "Adresse e-mail"
1312
-
1313
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:24
1314
- msgid "WordPress User Display Name"
1315
- msgstr "Nom d’affichage de l’utilisateur WordPress"
1316
-
1317
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:28
1318
- msgid "Total Number of Subscribers"
1319
- msgstr "Nombre total d’abonnés"
1320
-
1321
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:34
1322
- msgid "Newsletter Subject"
1323
- msgstr "Sujet de la newsletter"
1324
-
1325
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:38 views/newsletters.html:27
1326
- msgid "Post Notifications"
1327
- msgstr "Notifications d’article"
1328
-
1329
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:40
1330
- msgid "Total Number of Posts or Pages"
1331
- msgstr "Nombre total d’articles ou de pages"
1332
-
1333
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:44
1334
- msgid "Most Recent Post Title"
1335
- msgstr "Titre de l’article le plus récent"
1336
-
1337
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:48
1338
- msgid "Issue Number"
1339
- msgstr "Le numéro"
1340
-
1341
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:52
1342
- #: views/form/templates/settings/field_form.hbs:41
1343
- msgid "Date"
1344
- msgstr "Date"
1345
-
1346
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:54
1347
- msgid "Current day of the month number"
1348
- msgstr "Le chiffre du jour en cours"
1349
-
1350
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:58
1351
- msgid "Current day of the month in ordinal form, i.e. 2nd, 3rd, 4th, etc."
1352
- msgstr "Le jour actuel du mois en forme ordinale. Ex : 2nd, 3ème, 4ème, etc."
1353
-
1354
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:62
1355
- msgid "Full name of current day"
1356
- msgstr "Le nom complet du jour en cours"
1357
-
1358
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:66
1359
- msgid "Current month number"
1360
- msgstr "Le chiffre du mois en cours"
1361
-
1362
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:70
1363
- msgid "Full name of current month"
1364
- msgstr "Le nom complet du mois en cours"
1365
-
1366
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:78
1367
- #: views/newsletter/templates/blocks/footer/settings.hbs:22
1368
- #: views/newsletter/templates/blocks/header/settings.hbs:22
1369
- #: views/newsletter/templates/components/sidebar/styles.hbs:68
1370
- msgid "Links"
1371
- msgstr "Liens"
1372
-
1373
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:80
1374
- msgid "Unsubscribe link"
1375
- msgstr "Le lien du Désabonnement"
1376
-
1377
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:84
1378
- msgid "Edit subscription page link"
1379
- msgstr "Modifier le lien de la page d’abonnements"
1380
-
1381
- #: lib/Newsletter/Shortcodes/ShortcodesHelper.php:88
1382
- msgid "View in browser link"
1383
- msgstr "Lien pour voir dans le navigateur"
1384
-
1385
- #: lib/Router/Router.php:34
1386
- msgid "Invalid router endpoint"
1387
- msgstr "Point de terminaison de routeur non valide"
1388
-
1389
- #: lib/Router/Router.php:38
1390
- msgid "Invalid router endpoint action"
1391
- msgstr "Action de point de terminaison de routeur non valide"
1392
-
1393
- #: lib/Settings/Pages.php:12 lib/Settings/Pages.php:13
1394
- #: lib/Settings/Pages.php:37 lib/Subscription/Pages.php:94
1395
- msgid "MailPoet Page"
1396
- msgstr "Page MailPoet"
1397
-
1398
- #: lib/Subscribers/ImportExport/Export/Export.php:50
1399
- msgid "The export file could not be saved on the server."
1400
- msgstr "Impossible d’enregistrer le fichier d’exportation sur le serveur."
1401
-
1402
- #: lib/Subscribers/ImportExport/Export/Export.php:53
1403
- msgid "Export requires a ZIP extension to be installed on the host."
1404
- msgstr "L’exportation nécessite qu’une extension ZIP soit installée sur l’hôte."
1405
-
1406
- #: lib/Subscribers/ImportExport/Export/Export.php:82 views/segments.html:29
1407
- msgid "List"
1408
- msgstr "Liste"
1409
-
1410
- #: lib/Subscribers/ImportExport/Export/Export.php:203
1411
- msgid "Not In Segment"
1412
- msgstr "Pas dans le segment"
1413
-
1414
- #: lib/Subscribers/ImportExport/Import/Import.php:58
1415
- msgid "Missing or invalid subscriber data."
1416
- msgstr "Donnée d’abonné non valide ou manquante."
1417
-
1418
- #: lib/Subscribers/ImportExport/Import/Import.php:111
1419
- msgid "Unable to save imported subscribers."
1420
- msgstr "Impossible d’enregistrer les abonnés importés."
1421
-
1422
- #: lib/Subscribers/ImportExport/Import/MailChimp.php:128
1423
- msgid "Invalid API Key."
1424
- msgstr "Clé API non valide."
1425
-
1426
- #: lib/Subscribers/ImportExport/Import/MailChimp.php:131
1427
- msgid "Could not connect to your MailChimp account."
1428
- msgstr "Impossible de se connecter à votre compte MailChimp."
1429
-
1430
- #: lib/Subscribers/ImportExport/Import/MailChimp.php:134
1431
- msgid "The selected lists do not have matching columns (headers)."
1432
- msgstr "Les listes sélectionnées n’ont pas de colonnes correspondantes (en-têtes)."
1433
-
1434
- #: lib/Subscribers/ImportExport/Import/MailChimp.php:137
1435
- msgid ""
1436
- "The information received from MailChimp is too large for processing. Please "
1437
- "limit the number of lists!"
1438
- msgstr "Les informations reçues depuis MailChimp sont trop grosses pour être traitées. Veuillez limiter le nombre de listes !"
1439
-
1440
- #: lib/Subscribers/ImportExport/Import/MailChimp.php:140
1441
- msgid "Did not find any active subscribers."
1442
- msgstr "Impossible de trouver un abonné actif."
1443
-
1444
- #: lib/Subscribers/ImportExport/Import/MailChimp.php:143
1445
- msgid "Did not find any valid lists."
1446
- msgstr "Impossible de trouver une liste valide."
1447
-
1448
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:20
1449
- msgid "Not In List"
1450
- msgstr "Non listé"
1451
-
1452
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:33
1453
- #: lib/Subscription/Pages.php:266 views/form/editor.html:227
1454
- #: views/form/editor.html:230 views/subscribers/subscribers.html:48
1455
- msgid "First name"
1456
- msgstr "Prénom"
1457
-
1458
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:34
1459
- #: lib/Subscription/Pages.php:275 views/form/editor.html:236
1460
- #: views/form/editor.html:239 views/subscribers/subscribers.html:49
1461
- msgid "Last name"
1462
- msgstr "Nom"
1463
-
1464
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:35
1465
- #: lib/Subscription/Pages.php:285 views/newsletters.html:61
1466
- #: views/subscribers/subscribers.html:50 views/subscribers/subscribers.html:61
1467
- msgid "Status"
1468
- msgstr "État"
1469
-
1470
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:74
1471
- msgid "Ignore field..."
1472
- msgstr "Ignorer le champ..."
1473
-
1474
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:78
1475
- msgid "Create new field..."
1476
- msgstr "Créer un nouveau champ..."
1477
-
1478
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:84
1479
- msgid "Select all..."
1480
- msgstr "Tout sélectionner&hellip;"
1481
-
1482
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:88
1483
- msgid "Deselect all..."
1484
- msgstr "Tout désélectionner&hellip;"
1485
-
1486
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:93
1487
- msgid "Actions"
1488
- msgstr "Actions"
1489
-
1490
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:97
1491
- msgid "System fields"
1492
- msgstr "Champs système"
1493
-
1494
- #: lib/Subscribers/ImportExport/ImportExportFactory.php:103
1495
- #: views/subscribers/importExport/import.html:52
1496
- msgid "User fields"
1497
- msgstr "Champs utilisateur"
1498
-
1499
- #: lib/Subscription/Comment.php:23 lib/Subscription/Registration.php:11
1500
- msgid "Yes, please add me to your mailing list."
1501
- msgstr "Oui, veuillez m’ajouter à votre liste de diffusion."
1502
-
1503
- #: lib/Subscription/Pages.php:90
1504
- msgid "Hmmm... we don't have a record of you."
1505
- msgstr "Hummm&hellip; nous n’avons aucune trace de vous."
1506
-
1507
- #: lib/Subscription/Pages.php:120
1508
- msgid ""
1509
- "Your email address doesn't appear in our lists anymore. Sign up again or "
1510
- "contact us if this appears to be a mistake."
1511
- msgstr "Votre adresse e-mail n’apparaît plus dans nos listes. Inscrivez-vous à nouveau ou contactez-nous si cela semble être une erreur."
1512
-
1513
- #: lib/Subscription/Pages.php:164 lib/Subscription/Pages.php:176
1514
- msgid "You have subscribed to: %s"
1515
- msgstr "Vous venez de vous abonner à : %s"
1516
-
1517
- #: lib/Subscription/Pages.php:173
1518
- msgid "You are now subscribed!"
1519
- msgstr "Vous êtes maintenant abonné(e) !"
1520
-
1521
- #: lib/Subscription/Pages.php:186 lib/Subscription/Pages.php:404
1522
- msgid "Manage your subscription"
1523
- msgstr "Gérer votre abonnement"
1524
-
1525
- #: lib/Subscription/Pages.php:192
1526
- msgid "You are now unsubscribed."
1527
- msgstr "Vous êtes maintenant désabonné(e)."
1528
-
1529
- #: lib/Subscription/Pages.php:199
1530
- msgid "Yup, we've added you to our email list. You'll hear from us shortly."
1531
- msgstr "Nous vous avons ajouté(e) à notre liste. Vous recevrez notre prochaine newsletter."
1532
-
1533
- #: lib/Subscription/Pages.php:328
1534
- msgid "Your lists"
1535
- msgstr "Vos listes"
1536
-
1537
- #: lib/Subscription/Pages.php:336 views/form/editor.html:29
1538
- #: views/form/editor.html:383 views/newsletter/templates/components/save.hbs:3
1539
- #: views/segments.html:56 views/subscribers/subscribers.html:92
1540
- msgid "Save"
1541
- msgstr "Enregistrer"
1542
-
1543
- #: lib/Subscription/Pages.php:368
1544
- msgid "[link]Edit your profile[/link] to update your email."
1545
- msgstr "[link]Modifier votre profil[/link] pour mettre à jour votre e-mail."
1546
-
1547
- #: lib/Subscription/Pages.php:374
1548
- msgid "[link]Log in to your account[/link] to update your email."
1549
- msgstr "[link]Connectez-vous à votre compte[/link] pour mettre à jour votre e-mail."
1550
-
1551
- #: lib/Subscription/Pages.php:378
1552
- msgid ""
1553
- "Need to change your email address? Unsubscribe here, then simply sign up "
1554
- "again."
1555
- msgstr "Besoin de modifier votre adresse e-mail ? Désabonnez-vous ici et réinscrivez-vous simplement à nouveau."
1556
-
1557
- #: lib/Subscription/Pages.php:392
1558
- msgid "Accidentally unsubscribed?"
1559
- msgstr "Accidentellement désabonné ?"
1560
-
1561
- #: lib/Twig/Functions.php:78 views/settings/mta.html:1053
1562
- msgid "every minute"
1563
- msgstr "toutes les minutes"
1564
-
1565
- #: lib/Twig/Functions.php:79 views/settings/mta.html:1054
1566
- msgid "every %1$d minutes"
1567
- msgstr "toutes les %1$d minutes"
1568
-
1569
- #: lib/Twig/Functions.php:80 views/settings/mta.html:1055
1570
- msgid "every hour"
1571
- msgstr "toutes les heures"
1572
-
1573
- #: lib/Twig/Functions.php:81 views/settings/mta.html:1056
1574
- msgid "every %1$d hours"
1575
- msgstr "toutes les %1$d heures"
1576
-
1577
- #: lib/WP/Notice.php:22
1578
- msgid "MailPoet Error:"
1579
- msgstr "Erreur MailPoet :"
1580
-
1581
- #: mailpoet.php:51
1582
- msgid ""
1583
- "MailPoet plugin requires PHP version 5.3 or newer. Please read our "
1584
- "[link]instructions[/link] on how to resolve this issue."
1585
- msgstr "L’extension MailPoet nécessite PHP en version 5.3 ou supérieure. Veuillez lire nos [link]instructions[/link] sur la façon de corriger ce problème."
1586
-
1587
- #: mailpoet.php:67
1588
- msgid ""
1589
- "MailPoet cannot start because it is missing core files. Please reinstall the"
1590
- " plugin."
1591
- msgstr "MailPoet ne peut pas démarrer car il manque des fichiers du core. Veuillez réinstaller l’extension."
1592
-
1593
- #: views/form/editor.html:5
1594
- msgid "Form"
1595
- msgstr "Formulaire"
1596
-
1597
- #: views/form/editor.html:6 views/segments.html:67
1598
- #: views/subscribers/subscribers.html:93
1599
- msgid "Back"
1600
- msgstr "Retour"
1601
-
1602
- #: views/form/editor.html:11
1603
- msgid "Click here to change the name"
1604
- msgstr "Cliquez ici pour changer le nom"
1605
-
1606
- #: views/form/editor.html:50
1607
- msgid "This form adds the subscribers to these lists:"
1608
- msgstr "Ce formulaire ajoute les abonnés à ces listes :"
1609
-
1610
- #: views/form/editor.html:69
1611
- msgid "After submit..."
1612
- msgstr "Après l’adhésion&hellip;"
1613
-
1614
- #: views/form/editor.html:78
1615
- msgid "Show message"
1616
- msgstr "Afficher le message"
1617
-
1618
- #: views/form/editor.html:89
1619
- msgid "Go to Page"
1620
- msgstr "Aller à la page"
1621
-
1622
- #: views/form/editor.html:96
1623
- msgid "Check your inbox to confirm your subscription."
1624
- msgstr "Vérifiez votre boîte de réception pour confirmer votre abonnement."
1625
-
1626
- #: views/form/editor.html:126
1627
- msgid "Form Placement"
1628
- msgstr "Mise en place du formulaire"
1629
-
1630
- #: views/form/editor.html:131
1631
- msgid ""
1632
- "Add this form to your sidebar or footer on the [link]Widgets page[/link]."
1633
- msgstr "Ajoutez ce formulaire à votre colonne latérale ou à votre pied de page sur la [link]page des widgets[/link]."
1634
-
1635
- #: views/form/editor.html:140
1636
- msgid "Copy and paste this [link]shortcode[/link] on to a post or page."
1637
- msgstr "Copiez et collez ce [link]code court[/link] dans un article ou une page."
1638
-
1639
- #: views/form/editor.html:149
1640
- msgid "%sHTML%s, %sPHP%s and %siFrame%s versions are also available."
1641
- msgstr "Des versions %sHTML%s, %sPHP%s et %siFrame%s sont aussi disponibles."
1642
-
1643
- #: views/form/editor.html:170
1644
- msgid "Fields"
1645
- msgstr "Champs"
1646
-
1647
- #: views/form/editor.html:176
1648
- msgid "Add New Field"
1649
- msgstr "Ajouter un nouveau champ"
1650
-
1651
- #: views/form/editor.html:185
1652
- #: views/newsletter/templates/blocks/social/settings.hbs:3
1653
- #: views/newsletter/templates/components/sidebar/styles.hbs:2
1654
- msgid "Styles"
1655
- msgstr "Styles"
1656
-
1657
- #: views/form/editor.html:195
1658
- #: views/newsletter/templates/components/sidebar/preview.hbs:2
1659
- #: views/newsletters.html:101 views/settings/basics.html:242
1660
- #: views/settings/basics.html:299 views/settings/signup.html:177
1661
- msgid "Preview"
1662
- msgstr "Aperçu"
1663
-
1664
- #: views/form/editor.html:220
1665
- #: views/newsletter/templates/blocks/divider/widget.hbs:4
1666
- msgid "Divider"
1667
- msgstr "Séparateur"
1668
-
1669
- #: views/form/editor.html:245
1670
- msgid "List selection"
1671
- msgstr "Sélection de liste"
1672
-
1673
- #: views/form/editor.html:248
1674
- msgid "Select list(s):"
1675
- msgstr "Sélectionner une ou plusieurs listes :"
1676
-
1677
- #: views/form/editor.html:254
1678
- msgid "Random text or HTML"
1679
- msgstr "Texte ou code HTML"
1680
-
1681
- #: views/form/editor.html:257
1682
- msgid ""
1683
- "Subscribe to our newsletter and join [mailpoet_subscribers_count] other "
1684
- "subscribers."
1685
- msgstr "Abonnez-vous à notre newsletter et rejoignez les [mailpoet_subscribers_count] autres abonnés."
1686
-
1687
- #: views/form/editor.html:401
1688
- msgid "Edit name"
1689
- msgstr "Modifier le nom"
1690
-
1691
- #: views/form/editor.html:414
1692
- msgid "The form name was successfully updated!"
1693
- msgstr "Le nom du formulaire a bien été mis à jour !"
1694
-
1695
- #: views/form/editor.html:461
1696
- msgid "Form preview"
1697
- msgstr "Aperçu du formulaire"
1698
-
1699
- #: views/form/editor.html:507
1700
- msgid "Saved! The changes are now active in your widget."
1701
- msgstr "Enregistré ! Les changements sont maintenant activés dans votre widget."
1702
-
1703
- #: views/form/editor.html:509
1704
- msgid "Saved! Add this form to %1$sa widget%2$s."
1705
- msgstr "Enregistré ! Ajoutez ce formulaire dans %1$sun widget%2$s."
1706
-
1707
- #: views/form/editor.html:581 views/subscribers/importExport/import.html:50
1708
- msgid "Add new field"
1709
- msgstr "Ajouter un nouveau champ"
1710
-
1711
- #: views/form/editor.html:600 views/form/templates/toolbar/fields.hbs:14
1712
- msgid "Edit field"
1713
- msgstr "Modifier le champ"
1714
-
1715
- #: views/form/editor.html:621
1716
- msgid "This field will be deleted for all your subscribers. Are you sure?"
1717
- msgstr "Voulez-vous vraiment supprimer ce champ pour tous vos abonnés ?"
1718
-
1719
- #: views/form/editor.html:638
1720
- msgid "Removed custom field “\"+name+\"“"
1721
- msgstr "Champ personnalisé “\"+name+\"“ retiré"
1722
-
1723
- #: views/form/iframe.html:15
1724
- msgid "MailPoet Subscription Form"
1725
- msgstr "Formulaire d’abonnement MailPoet"
1726
-
1727
- #: views/form/templates/blocks/container.hbs:10
1728
- msgid "Edit display"
1729
- msgstr "Modifier l’affichage"
1730
-
1731
- #: views/form/templates/blocks/segment.hbs:2
1732
- #: views/subscribers/importExport/import.html:48
1733
- msgid "Please select at least one list"
1734
- msgstr "Veuillez sélectionner au moins une liste"
1735
-
1736
- #: views/form/templates/preview.hbs:4
1737
- msgid "This is a success message."
1738
- msgstr "Ceci est un message de succès."
1739
-
1740
- #: views/form/templates/preview.hbs:5
1741
- msgid "This is an error message."
1742
- msgstr "Ceci est un message d’erreur."
1743
-
1744
- #: views/form/templates/settings/date_default.hbs:2
1745
- msgid "Preselect today's date:"
1746
- msgstr "Présélectionner la date d’aujourd'hui :"
1747
-
1748
- #: views/form/templates/settings/date_default.hbs:11
1749
- #: views/form/templates/settings/label_within.hbs:5
1750
- #: views/form/templates/settings/required.hbs:9
1751
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:124
1752
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:281
1753
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:79
1754
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:221
1755
- #: views/settings/advanced.html:90 views/settings/advanced.html:130
1756
- #: views/settings/bounce.html:190 views/settings/mta.html:591
1757
- #: views/settings/signup.html:34 views/subscribers/importExport/export.html:33
1758
- #: views/subscribers/importExport/import/step2.html:66
1759
- msgid "Yes"
1760
- msgstr "Oui"
1761
-
1762
- #: views/form/templates/settings/date_default.hbs:20
1763
- #: views/form/templates/settings/label_within.hbs:8
1764
- #: views/form/templates/settings/required.hbs:17
1765
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:130
1766
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:183
1767
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:209
1768
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:287
1769
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:85
1770
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:139
1771
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:165
1772
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:227
1773
- #: views/settings/advanced.html:101 views/settings/advanced.html:141
1774
- #: views/settings/bounce.html:148 views/settings/bounce.html:179
1775
- #: views/settings/mta.html:554 views/settings/mta.html:602
1776
- #: views/settings/signup.html:46 views/subscribers/importExport/export.html:38
1777
- #: views/subscribers/importExport/import/step2.html:70
1778
- msgid "No"
1779
- msgstr "Non"
1780
-
1781
- #: views/form/templates/settings/date_formats.hbs:9
1782
- msgid "Order"
1783
- msgstr "Ordre"
1784
-
1785
- #: views/form/templates/settings/date_types.hbs:2
1786
- msgid "Type of date"
1787
- msgstr "Type de date"
1788
-
1789
- #: views/form/templates/settings/field.hbs:19
1790
- msgid "Number of lines:"
1791
- msgstr "Nombre de lignes :"
1792
-
1793
- #: views/form/templates/settings/field.hbs:61
1794
- msgid "Automatically add paragraphs"
1795
- msgstr "Créer automatiquement les paragraphes"
1796
-
1797
- #: views/form/templates/settings/field.hbs:24
1798
- msgid "1 line"
1799
- msgid_plural "%d lines"
1800
- msgstr[0] "1 ligne"
1801
- msgstr[1] "%d lignes"
1802
-
1803
- #: views/form/templates/settings/field_form.hbs:11
1804
- msgid "Select a field type:"
1805
- msgstr "Sélectionner un type de champ :"
1806
-
1807
- #: views/form/templates/settings/field_form.hbs:16
1808
- msgid "Please specify a type"
1809
- msgstr "Veuillez spécifier un type."
1810
-
1811
- #: views/form/templates/settings/field_form.hbs:21
1812
- msgid "Text Input"
1813
- msgstr "Texte"
1814
-
1815
- #: views/form/templates/settings/field_form.hbs:25
1816
- msgid "Text Area"
1817
- msgstr "Zone de texte"
1818
-
1819
- #: views/form/templates/settings/field_form.hbs:29
1820
- msgid "Radio buttons"
1821
- msgstr "Boutons radio"
1822
-
1823
- #: views/form/templates/settings/field_form.hbs:33
1824
- msgid "Checkbox"
1825
- msgstr "Case à cocher"
1826
-
1827
- #: views/form/templates/settings/field_form.hbs:46
1828
- msgid "Field name:"
1829
- msgstr "Nom du champ :"
1830
-
1831
- #: views/form/templates/settings/field_form.hbs:53
1832
- #: views/subscribers/importExport/import/step2.html:137
1833
- msgid "Please specify a name"
1834
- msgstr "Veuillez spécifier un nom."
1835
-
1836
- #: views/form/templates/settings/field_form.hbs:61
1837
- #: views/form/templates/settings/submit.hbs:2
1838
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:299
1839
- #: views/newsletter/templates/blocks/button/settings.hbs:117
1840
- #: views/newsletter/templates/blocks/container/settings.hbs:14
1841
- #: views/newsletter/templates/blocks/divider/settings.hbs:37
1842
- #: views/newsletter/templates/blocks/footer/settings.hbs:59
1843
- #: views/newsletter/templates/blocks/header/settings.hbs:59
1844
- #: views/newsletter/templates/blocks/image/settings.hbs:40
1845
- #: views/newsletter/templates/blocks/social/settings.hbs:6
1846
- #: views/newsletter/templates/blocks/spacer/settings.hbs:10
1847
- #: views/subscribers/importExport/import/step2.html:151
1848
- msgid "Done"
1849
- msgstr "Terminé"
1850
-
1851
- #: views/form/templates/settings/field_form.hbs:93
1852
- msgid "Updated custom field “\"+data.name+\"“"
1853
- msgstr "Champ personnalisé “\"+data.name+\"“ mis à jour"
1854
-
1855
- #: views/form/templates/settings/field_form.hbs:97
1856
- msgid "Added custom field “\"+data.name+\"“"
1857
- msgstr "Champ personnalisé “\"+data.name+\"“ ajouté"
1858
-
1859
- #: views/form/templates/settings/label.hbs:2
1860
- msgid "Label:"
1861
- msgstr "Libellé :"
1862
-
1863
- #: views/form/templates/settings/label_within.hbs:2
1864
- msgid "Display label within input:"
1865
- msgstr "Afficher le libellé dans le champs :"
1866
-
1867
- #: views/form/templates/settings/required.hbs:2
1868
- msgid "Is this field mandatory?"
1869
- msgstr "Ce champ est-il obligatoire ?"
1870
-
1871
- #: views/form/templates/settings/segment_selection.hbs:4
1872
- msgid "Select the segment that you want to add:"
1873
- msgstr "Sélectionner le segment que vous voulez ajouter :"
1874
-
1875
- #: views/form/templates/settings/segment_selection.hbs:8
1876
- msgid "Add"
1877
- msgstr "Ajouter"
1878
-
1879
- #: views/form/templates/settings/segment_selection_item.hbs:10
1880
- #: views/form/templates/settings/values_item.hbs:20
1881
- msgid "Remove"
1882
- msgstr "Supprimer"
1883
-
1884
- #: views/form/templates/settings/segment_selection_item.hbs:11
1885
- msgid "Move"
1886
- msgstr "Déplacer"
1887
-
1888
- #: views/form/templates/settings/validate.hbs:2
1889
- msgid "Validate for:"
1890
- msgstr "Validé pour :"
1891
-
1892
- #: views/form/templates/settings/validate.hbs:6
1893
- msgid "Nothing"
1894
- msgstr "Rien"
1895
-
1896
- #: views/form/templates/settings/validate.hbs:11
1897
- msgid "Numbers only"
1898
- msgstr "Uniquement des chiffres"
1899
-
1900
- #: views/form/templates/settings/validate.hbs:16
1901
- msgid "Alphanumerical"
1902
- msgstr "Alphanumérique"
1903
-
1904
- #: views/form/templates/settings/validate.hbs:21
1905
- msgid "Phone number, (+,-,#,(,) and spaces allowed)"
1906
- msgstr "Numéro de téléphone, (+,-,#,(,) et espaces autorisés)"
1907
-
1908
- #: views/form/templates/settings/values.hbs:4
1909
- msgid "Add item"
1910
- msgstr "Ajouter un élément"
1911
-
1912
- #: views/form/templates/toolbar/fields.hbs:20
1913
- msgid "Delete field"
1914
- msgstr "Supprimer le champ"
1915
-
1916
- #: views/form/widget.html:34
1917
- msgid "An error occurred, make sure you have filled all the required fields."
1918
- msgstr "Une erreur s’est produite, veuillez vous assurer que vous avez rempli tous les champs nécessaires."
1919
-
1920
- #: views/forms.html:17 views/newsletters.html:29 views/segments.html:14
1921
- #: views/subscribers/subscribers.html:18
1922
- msgid "Search"
1923
- msgstr "Rechercher"
1924
-
1925
- #: views/forms.html:18
1926
- msgid "Loading forms..."
1927
- msgstr "Chargement des formulaires&hellip;"
1928
-
1929
- #: views/forms.html:19
1930
- msgid "No forms were found. Why not create a new one?"
1931
- msgstr "Aucun formulaire trouvé. Pourquoi ne pas en créer un ?"
1932
-
1933
- #: views/forms.html:20
1934
- msgid "All forms on this page are selected."
1935
- msgstr "Tous les formulaires de cette page sont sélectionnés."
1936
-
1937
- #: views/forms.html:21
1938
- msgid "All %d forms are selected."
1939
- msgstr "Tous les %d formulaires sont sélectionnés."
1940
-
1941
- #: views/forms.html:22
1942
- msgid "Select all forms on all pages"
1943
- msgstr "Sélectionner tous les formulaires de toutes les pages"
1944
-
1945
- #: views/forms.html:23 views/newsletters.html:35 views/segments.html:20
1946
- #: views/subscribers/subscribers.html:24
1947
- msgid "Clear selection"
1948
- msgstr "Réinitialiser la sélection"
1949
-
1950
- #: views/forms.html:24
1951
- msgid "%d forms permanently deleted"
1952
- msgstr "%d formulaires supprimés définitivement."
1953
-
1954
- #: views/forms.html:25 views/newsletters.html:37 views/segments.html:22
1955
- #: views/subscribers/subscribers.html:26
1956
- msgid "Select bulk action"
1957
- msgstr "Sélectionner une action groupée"
1958
-
1959
- #: views/forms.html:26 views/newsletters.html:38 views/segments.html:23
1960
- #: views/subscribers/subscribers.html:27
1961
- msgid "Bulk Actions"
1962
- msgstr "Actions groupées"
1963
-
1964
- #: views/forms.html:27 views/newsletters.html:39 views/segments.html:24
1965
- #: views/subscribers/subscribers.html:28
1966
- msgid "Apply"
1967
- msgstr "Appliquer"
1968
-
1969
- #: views/forms.html:28 views/newsletters.html:40
1970
- #: views/subscribers/subscribers.html:29
1971
- msgid "Filter"
1972
- msgstr "Filtrer"
1973
-
1974
- #: views/forms.html:29 views/newsletters.html:41 views/segments.html:52
1975
- #: views/subscribers/subscribers.html:30
1976
- msgid "Empty Trash"
1977
- msgstr "Vider la corbeille"
1978
-
1979
- #: views/forms.html:30 views/newsletters.html:42 views/segments.html:53
1980
- #: views/subscribers/subscribers.html:31
1981
- msgid "Select All"
1982
- msgstr "Tout sélectionner"
1983
-
1984
- #: views/forms.html:31 views/newsletters.html:43 views/segments.html:54
1985
- #: views/subscribers/subscribers.html:33
1986
- msgid "Restore"
1987
- msgstr "Restaurer"
1988
-
1989
- #: views/forms.html:32 views/newsletters.html:44
1990
- #: views/subscribers/subscribers.html:36
1991
- msgid "Delete Permanently"
1992
- msgstr "Supprimer définitivement"
1993
-
1994
- #: views/forms.html:34 views/newsletters.html:47 views/segments.html:58
1995
- #: views/subscribers/subscribers.html:39
1996
- msgid "Previous page"
1997
- msgstr "Page précédente"
1998
-
1999
- #: views/forms.html:35 views/newsletters.html:48 views/segments.html:59
2000
- #: views/subscribers/subscribers.html:40
2001
- msgid "First page"
2002
- msgstr "Première page"
2003
-
2004
- #: views/forms.html:36 views/newsletters.html:49 views/segments.html:60
2005
- #: views/subscribers/subscribers.html:41
2006
- msgid "Next page"
2007
- msgstr "Page suivante"
2008
-
2009
- #: views/forms.html:37 views/newsletters.html:50 views/segments.html:61
2010
- #: views/subscribers/subscribers.html:42
2011
- msgid "Last page"
2012
- msgstr "Dernière page"
2013
-
2014
- #: views/forms.html:38 views/subscribers/subscribers.html:43
2015
- msgid "Current Page"
2016
- msgstr "Page actuelle"
2017
-
2018
- #: views/forms.html:39 views/newsletters.html:52 views/segments.html:63
2019
- #: views/subscribers/subscribers.html:44
2020
- msgid "of"
2021
- msgstr "de"
2022
-
2023
- #: views/forms.html:40 views/newsletters.html:53 views/segments.html:64
2024
- #: views/subscribers/subscribers.html:45
2025
- msgid "%$1d item(s)"
2026
- msgstr "%$1d élément(s)"
2027
-
2028
- #: views/forms.html:42 views/segments.html:25
2029
- #: views/subscribers/importExport/import/step2.html:133
2030
- msgid "Name"
2031
- msgstr "Nom"
2032
-
2033
- #: views/forms.html:44
2034
- msgid "User choice:"
2035
- msgstr "Choix de l’utilisateur :"
2036
-
2037
- #: views/forms.html:45
2038
- msgid "Sign-ups"
2039
- msgstr "Inscriptions"
2040
-
2041
- #: views/forms.html:46
2042
- msgid "Created On"
2043
- msgstr "Créé le"
2044
-
2045
- #: views/forms.html:47
2046
- msgid "1 form was moved to the trash."
2047
- msgstr "1 formulaire a été déplacé dans la corbeille."
2048
-
2049
- #: views/forms.html:48
2050
- msgid "%$1d forms were moved to the trash."
2051
- msgstr "%$1d formulaires ont été déplacés dans la corbeille."
2052
-
2053
- #: views/forms.html:49
2054
- msgid "1 form was permanently deleted."
2055
- msgstr "1 formulaire a été définitivement supprimé."
2056
-
2057
- #: views/forms.html:50
2058
- msgid "%$1d forms were permanently deleted."
2059
- msgstr "%$1d formulaires ont été définitivement supprimés."
2060
-
2061
- #: views/forms.html:51
2062
- msgid "1 form has been restored from the trash."
2063
- msgstr "1 formulaire a été restauré depuis la corbeille."
2064
-
2065
- #: views/forms.html:52
2066
- msgid "%$1d forms have been restored from the trash."
2067
- msgstr "%$1d formulaires ont été restaurés depuis la corbeille."
2068
-
2069
- #: views/forms.html:53 views/newsletters.html:77 views/segments.html:49
2070
- #: views/subscribers/subscribers.html:32
2071
- msgid "Edit"
2072
- msgstr "Modifier"
2073
-
2074
- #: views/forms.html:54 views/newsletters.html:78 views/segments.html:41
2075
- msgid "Duplicate"
2076
- msgstr "Dupliquer"
2077
-
2078
- #: views/forms.html:55
2079
- msgid "Form \"%$1s\" has been duplicated."
2080
- msgstr "Le formulaire « %$1s » a été dupliqué."
2081
-
2082
- #: views/forms.html:57 views/newsletters.html:76 views/segments.html:51
2083
- #: views/subscribers/subscribers.html:35
2084
- msgid "Move to trash"
2085
- msgstr "Déplacer dans la corbeille"
2086
-
2087
- #: views/forms.html:58 views/newsletters.html:90 views/segments.html:48
2088
- #: views/subscribers/subscribers.html:89
2089
- msgid "Add New"
2090
- msgstr "Ajouter"
2091
-
2092
- #: views/index.html:5
2093
- msgid " %sSet up%s MailPoet and start sending."
2094
- msgstr "%sConfigurez MailPoet%s et commencez vos envois."
2095
-
2096
- #: views/invalidkey.html:6
2097
- msgid "All sending is currently paused!"
2098
- msgstr "Tous les envois sont actuellement suspendus !"
2099
-
2100
- #: views/invalidkey.html:9
2101
- msgid "Your key to send with MailPoet is invalid."
2102
- msgstr "Votre clé pour envoyer avec MailPoet n’est pas valide !"
2103
-
2104
- #: views/invalidkey.html:13
2105
- msgid "Visit MailPoet.com to purchase a key"
2106
- msgstr "Rendez-vous sur MailPoet.com pour acheter une clé"
2107
-
2108
- #: views/layout.html:64
2109
- msgid ""
2110
- "Want to give feedback to the MailPoet team? Contact us here. Please provide "
2111
- "as much information as possible!"
2112
- msgstr "Vous voulez envoyer un retour d’expérience à l’équipe MailPoet ? Contactez-nous ici. Veuillez fournir le plus d’informations possible !"
2113
-
2114
- #: views/limit.html:6
2115
- msgid "You've reached the %d subscribers limit!"
2116
- msgstr "Vous avez atteint la limite de %d abonnés !"
2117
-
2118
- #: views/limit.html:9
2119
- msgid "MailPoet 3 is currently limited to %d subscribers."
2120
- msgstr "MailPoet 3 est actuellement limité à %d abonnés."
2121
-
2122
- #: views/limit.html:19
2123
- msgid "Immediately, you can:"
2124
- msgstr "Immédiatement, vous pouvez :"
2125
-
2126
- #: views/limit.html:21
2127
- msgid "Delete unconfirmed subscribers to have less than %d subscribers."
2128
- msgstr "Supprimez les abonnés non confirmés pour avoir moins de %d abonnés."
2129
-
2130
- #: views/limit.html:23
2131
- msgid "Contact us"
2132
- msgstr "Nous contacter"
2133
-
2134
- #: views/limit.html:24
2135
- msgid "to become a Premium beta tester."
2136
- msgstr "pour devenir un bêta testeur Premium."
2137
-
2138
- #: views/newsletter/editor.html:230 views/newsletters.html:55
2139
- msgid "Select type"
2140
- msgstr "Sélectionner le type"
2141
-
2142
- #: views/newsletter/editor.html:230 views/newsletters.html:56
2143
- msgid "Template"
2144
- msgstr "Modèle"
2145
-
2146
- #: views/newsletter/editor.html:230 views/newsletters.html:57
2147
- msgid "Designer"
2148
- msgstr "Concepteur"
2149
-
2150
- #: views/newsletter/editor.html:230 views/newsletters.html:58
2151
- msgid "Send"
2152
- msgstr "Envoyer"
2153
-
2154
- #: views/newsletter/editor.html:259
2155
- msgid "Insert/edit link"
2156
- msgstr "Insérer/modifier le lien"
2157
-
2158
- #: views/newsletter/editor.html:266
2159
- msgid "Type"
2160
- msgstr "Type"
2161
-
2162
- #: views/newsletter/editor.html:268
2163
- msgid "Link to a web page"
2164
- msgstr "Lien vers une page web"
2165
-
2166
- #: views/newsletter/editor.html:269
2167
- msgid "Browser version"
2168
- msgstr "Version du navigateur"
2169
-
2170
- #: views/newsletter/editor.html:270
2171
- msgid "Unsubcribe page"
2172
- msgstr "Page de désabonnement"
2173
-
2174
- #: views/newsletter/editor.html:271
2175
- msgid "Manage your subscription page"
2176
- msgstr "Page de gestion de votre abonnement"
2177
-
2178
- #: views/newsletter/editor.html:276 views/newsletter/editor.html:896
2179
- #: views/newsletter/editor.html:901 views/newsletter/editor.html:906
2180
- #: views/newsletter/editor.html:911 views/newsletter/editor.html:916
2181
- #: views/newsletter/editor.html:926 views/newsletter/editor.html:931
2182
- #: views/newsletter/editor.html:936 views/newsletter/editor.html:941
2183
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
2184
- #: views/newsletter/templates/blocks/button/settings.hbs:14
2185
- #: views/newsletter/templates/blocks/image/settings.hbs:4
2186
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:193
2187
- msgid "Link"
2188
- msgstr "Lien"
2189
-
2190
- #: views/newsletter/editor.html:279
2191
- msgid "Title"
2192
- msgstr "Titre"
2193
-
2194
- #: views/newsletter/editor.html:282
2195
- msgid "Open link in a new window/tab"
2196
- msgstr "Ouvrir le lien dans une nouvelle fenêtre/onglet"
2197
-
2198
- #: views/newsletter/editor.html:288
2199
- msgid "Search your content"
2200
- msgstr "Recherchez votre contenu"
2201
-
2202
- #: views/newsletter/editor.html:300
2203
- msgid "No search term specified. Showing recent items."
2204
- msgstr "Aucun terme de recherche spécifié. Affichage des éléments récents."
2205
-
2206
- #: views/newsletter/editor.html:310
2207
- msgid "Add Link"
2208
- msgstr "Ajouter un lien"
2209
-
2210
- #: views/newsletter/editor.html:313
2211
- #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2212
- #: views/subscribers/importExport/import/step2.html:153
2213
- msgid "Cancel"
2214
- msgstr "Annuler"
2215
-
2216
- #: views/newsletter/editor.html:322
2217
- msgid "Failed to fetch available posts"
2218
- msgstr "Erreur de récupération des articles disponibles"
2219
-
2220
- #: views/newsletter/editor.html:323
2221
- msgid "Failed to fetch rendered posts"
2222
- msgstr "Erreur de récupération des articles"
2223
-
2224
- #: views/newsletter/editor.html:324
2225
- msgid "Select a shortcode"
2226
- msgstr "Sélectionner un code court"
2227
-
2228
- #: views/newsletter/editor.html:325
2229
- msgid ""
2230
- "All emails must include an \"Unsubscribe\" link. Add a footer widget to your"
2231
- " email to continue."
2232
- msgstr "Tous les e-mails doivent contenir le lien de « Désabonnement ». Ajoutez un widget de pied de page à votre e-mail pour continuer."
2233
-
2234
- #: views/newsletter/editor.html:326
2235
- msgid "Enter an email address to send the preview newsletter to."
2236
- msgstr "Saisissez une adresse e-mail pour recevoir l’aperçu de la newsletter."
2237
-
2238
- #: views/newsletter/editor.html:327
2239
- msgid "Your test email has been sent!"
2240
- msgstr "Votre e-mail de test a été envoyé !"
2241
-
2242
- #: views/newsletter/editor.html:328
2243
- msgid "Please add a template name"
2244
- msgstr "Veuillez ajouter un nom de modèle"
2245
-
2246
- #: views/newsletter/editor.html:329
2247
- msgid "Please add a template description"
2248
- msgstr "Veuillez ajouter une description de modèle"
2249
-
2250
- #: views/newsletter/editor.html:330
2251
- msgid "Template has been saved."
2252
- msgstr "Le modèle a été enregistré."
2253
-
2254
- #: views/newsletter/editor.html:331
2255
- msgid "Template has not been saved, please try again"
2256
- msgstr "Le modèle n’a pas été enregistré. Veuillez essayer à nouveau."
2257
-
2258
- #: views/newsletter/editor.html:332
2259
- msgid "Categories & tags"
2260
- msgstr "Catégories & étiquettes"
2261
-
2262
- #: views/newsletter/editor.html:333
2263
- msgid "There is no content to display."
2264
- msgstr "Il n’y a aucun contenu à afficher."
2265
-
2266
- #: views/newsletter/editor.html:334
2267
- msgid ""
2268
- "Your preview should open in a new tab. Please ensure your browser is not "
2269
- "blocking popups from this page."
2270
- msgstr "Votre aperçu doit s’ouvrir dans un nouvel onglet. Veuillez vous assurer que votre navigateur ne bloque pas les popups de cette page."
2271
-
2272
- #: views/newsletter/editor.html:335
2273
- msgid "Newsletter Preview"
2274
- msgstr "Aperçu de la newsletter"
2275
-
2276
- #: views/newsletter/editor.html:915
2277
- msgid "Website"
2278
- msgstr "Site Web"
2279
-
2280
- #: views/newsletter/editor.html:940
2281
- msgid "Custom"
2282
- msgstr "Personnalisé"
2283
-
2284
- #: views/newsletter/editor.html:963 views/newsletter/editor.html:1085
2285
- msgid "Read more"
2286
- msgstr "Lire la suite"
2287
-
2288
- #: views/newsletter/editor.html:999
2289
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
2290
- #: views/newsletter/templates/blocks/button/settings.hbs:1
2291
- #: views/newsletter/templates/blocks/button/widget.hbs:4
2292
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:199
2293
- msgid "Button"
2294
- msgstr "Bouton"
2295
-
2296
- #: views/newsletter/editor.html:1037
2297
- msgid "Add your postal address here!"
2298
- msgstr "Ajoutez votre adresse postale ici !"
2299
-
2300
- #: views/newsletter/editor.html:1057
2301
- msgid "An image of..."
2302
- msgstr "Une image de&hellip;"
2303
-
2304
- #: views/newsletter/editor.html:1156
2305
- msgid "Edit this to insert text."
2306
- msgstr "Modifiez ceci pour insérer votre texte."
2307
-
2308
- #: views/newsletter/editor.html:1159
2309
- msgid "Display problems?"
2310
- msgstr "Afficher les problèmes ?"
2311
-
2312
- #: views/newsletter/editor.html:1160
2313
- msgid "Open this email in your web browser."
2314
- msgstr "Ouvrir cet e-mail dans votre navigateur."
2315
-
2316
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:1
2317
- #: views/newsletter/templates/blocks/posts/settings.hbs:1
2318
- msgid "Post selection"
2319
- msgstr "Sélection d’article"
2320
-
2321
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:4
2322
- msgid "Show:"
2323
- msgstr "Afficher :"
2324
-
2325
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:8
2326
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:6
2327
- #: views/newsletter/templates/blocks/posts/widget.hbs:4
2328
- msgid "Posts"
2329
- msgstr "Articles"
2330
-
2331
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:9
2332
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:7
2333
- msgid "Pages"
2334
- msgstr "Pages"
2335
-
2336
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:10
2337
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:8
2338
- msgid "MailPoet pages"
2339
- msgstr "Pages MailPoet"
2340
-
2341
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:26
2342
- msgid "Include"
2343
- msgstr "Inclure"
2344
-
2345
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:32
2346
- msgid "Exclude"
2347
- msgstr "Exclure"
2348
-
2349
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:41
2350
- #: views/newsletter/templates/blocks/posts/settings.hbs:7
2351
- msgid "Display options"
2352
- msgstr "Afficher les options"
2353
-
2354
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:45
2355
- msgid "Hide display options"
2356
- msgstr "Masquer les options d’affichage"
2357
-
2358
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:52
2359
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:5
2360
- msgid "Excerpt"
2361
- msgstr "Extrait"
2362
-
2363
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:58
2364
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:11
2365
- msgid "Full post"
2366
- msgstr "Article complet"
2367
-
2368
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:64
2369
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:17
2370
- msgid "Title only"
2371
- msgstr "Titre uniquement"
2372
-
2373
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:70
2374
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:25
2375
- msgid "Title Format"
2376
- msgstr "Format du titre"
2377
-
2378
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:74
2379
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:29
2380
- #: views/newsletter/templates/components/sidebar/styles.hbs:33
2381
- msgid "Heading 1"
2382
- msgstr "Titre 1"
2383
-
2384
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:80
2385
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:35
2386
- #: views/newsletter/templates/components/sidebar/styles.hbs:48
2387
- msgid "Heading 2"
2388
- msgstr "Titre 2"
2389
-
2390
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:86
2391
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:41
2392
- #: views/newsletter/templates/components/sidebar/styles.hbs:63
2393
- msgid "Heading 3"
2394
- msgstr "Titre 3"
2395
-
2396
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:92
2397
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:47
2398
- msgid "Show as list"
2399
- msgstr "Afficher en liste"
2400
-
2401
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:98
2402
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:53
2403
- msgid "Title Alignment"
2404
- msgstr "Alignement du titre"
2405
-
2406
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:102
2407
- #: views/newsletter/templates/blocks/button/settings.hbs:27
2408
- #: views/newsletter/templates/blocks/footer/settings.hbs:41
2409
- #: views/newsletter/templates/blocks/header/settings.hbs:41
2410
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:57
2411
- msgid "Left"
2412
- msgstr "À gauche"
2413
-
2414
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:108
2415
- #: views/newsletter/templates/blocks/button/settings.hbs:33
2416
- #: views/newsletter/templates/blocks/footer/settings.hbs:47
2417
- #: views/newsletter/templates/blocks/header/settings.hbs:47
2418
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:63
2419
- msgid "Center"
2420
- msgstr "Centré"
2421
-
2422
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:114
2423
- #: views/newsletter/templates/blocks/button/settings.hbs:39
2424
- #: views/newsletter/templates/blocks/footer/settings.hbs:53
2425
- #: views/newsletter/templates/blocks/header/settings.hbs:53
2426
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:69
2427
- msgid "Right"
2428
- msgstr "À droite"
2429
-
2430
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:120
2431
- msgid "Title as links"
2432
- msgstr "Titre en tant que lien"
2433
-
2434
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:138
2435
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:95
2436
- msgid "Featured image position"
2437
- msgstr "Position de l’image mise en avant"
2438
-
2439
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:142
2440
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:99
2441
- msgid "Below title"
2442
- msgstr "Sous le titre"
2443
-
2444
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:148
2445
- msgid "Above title"
2446
- msgstr "Au-dessus du titre"
2447
-
2448
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:154
2449
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:111
2450
- msgid "None"
2451
- msgstr "Aucun"
2452
-
2453
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:161
2454
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:117
2455
- msgid "Image width"
2456
- msgstr "Largeur de l’image"
2457
-
2458
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:165
2459
- #: views/newsletter/templates/blocks/image/settings.hbs:30
2460
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:121
2461
- msgid "Full width"
2462
- msgstr "Pleine largeur"
2463
-
2464
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:171
2465
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:127
2466
- msgid "Padded"
2467
- msgstr "Retrait"
2468
-
2469
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:179
2470
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:135
2471
- msgid "Show author"
2472
- msgstr "Afficher l’auteur"
2473
-
2474
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:189
2475
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:215
2476
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:145
2477
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:171
2478
- msgid "Above text"
2479
- msgstr "Au-dessus du texte"
2480
-
2481
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:195
2482
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:221
2483
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:151
2484
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:177
2485
- msgid "Below text"
2486
- msgstr "Sous le texte"
2487
-
2488
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:198
2489
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:224
2490
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:154
2491
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:180
2492
- msgid "Preceded by:"
2493
- msgstr "Précédé par :"
2494
-
2495
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:205
2496
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:161
2497
- msgid "Show categories"
2498
- msgstr "Afficher les catégories"
2499
-
2500
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:233
2501
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:189
2502
- msgid "\"Read more\" text"
2503
- msgstr "Texte du « Lire la suite »"
2504
-
2505
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:252
2506
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:208
2507
- msgid "Design a button"
2508
- msgstr "Concevoir un bouton"
2509
-
2510
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:260
2511
- msgid "Sort by"
2512
- msgstr "Trier par"
2513
-
2514
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:264
2515
- msgid "Newest"
2516
- msgstr "Plus récente"
2517
-
2518
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:270
2519
- msgid "Oldest"
2520
- msgstr "Plus ancienne"
2521
-
2522
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:277
2523
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:217
2524
- msgid "Show divider between posts"
2525
- msgstr "Afficher les séparateurs entre les articles"
2526
-
2527
- #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:291
2528
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:231
2529
- msgid "Select divider"
2530
- msgstr "Sélectionner le séparateur"
2531
-
2532
- #: views/newsletter/templates/blocks/automatedLatestContent/widget.hbs:4
2533
- msgid "Automatic Latest Content"
2534
- msgstr "Contenu récent automatique"
2535
-
2536
- #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:2
2537
- msgid "Switch editing layer"
2538
- msgstr "Basculer vers modification de calque"
2539
-
2540
- #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:4
2541
- msgid "Edit settings"
2542
- msgstr "Modifier les réglages"
2543
-
2544
- #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2545
- #: views/newsletters.html:99
2546
- msgid "Delete"
2547
- msgstr "Supprimer"
2548
-
2549
- #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2550
- msgid "Confirm deletion"
2551
- msgstr "Confirmer la suppression"
2552
-
2553
- #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2554
- msgid "Cancel deletion"
2555
- msgstr "Annuler la suppression"
2556
-
2557
- #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2558
- msgid "Drag to move"
2559
- msgstr "Glissez pour déplacer"
2560
-
2561
- #: views/newsletter/templates/blocks/button/settings.hbs:4
2562
- msgid "Label"
2563
- msgstr "Libellé"
2564
-
2565
- #: views/newsletter/templates/blocks/button/settings.hbs:23
2566
- msgid "Alignment"
2567
- msgstr "Alignement"
2568
-
2569
- #: views/newsletter/templates/blocks/button/settings.hbs:57
2570
- #: views/newsletter/templates/blocks/footer/settings.hbs:16
2571
- #: views/newsletter/templates/blocks/header/settings.hbs:16
2572
- #: views/newsletter/templates/blocks/social/settingsIcon.hbs:55
2573
- #: views/newsletter/templates/blocks/text/settings.hbs:1
2574
- #: views/newsletter/templates/blocks/text/settings.hbs:2
2575
- #: views/newsletter/templates/blocks/text/widget.hbs:4
2576
- #: views/newsletter/templates/components/sidebar/styles.hbs:18
2577
- msgid "Text"
2578
- msgstr "Texte "
2579
-
2580
- #: views/newsletter/templates/blocks/button/settings.hbs:63
2581
- msgid "Bold"
2582
- msgstr "Gras"
2583
-
2584
- #: views/newsletter/templates/blocks/button/settings.hbs:71
2585
- #: views/newsletter/templates/blocks/container/settings.hbs:7
2586
- #: views/newsletter/templates/blocks/divider/settings.hbs:28
2587
- #: views/newsletter/templates/blocks/footer/settings.hbs:34
2588
- #: views/newsletter/templates/blocks/header/settings.hbs:34
2589
- #: views/newsletter/templates/blocks/spacer/settings.hbs:6
2590
- #: views/newsletter/templates/components/sidebar/styles.hbs:79
2591
- msgid "Background"
2592
- msgstr "Arrière-plan"
2593
-
2594
- #: views/newsletter/templates/blocks/button/settings.hbs:77
2595
- msgid "Border"
2596
- msgstr "Bordure"
2597
-
2598
- #: views/newsletter/templates/blocks/button/settings.hbs:85
2599
- msgid "Rounded corners"
2600
- msgstr "Coins arrondis"
2601
-
2602
- #: views/newsletter/templates/blocks/button/settings.hbs:94
2603
- msgid "Width"
2604
- msgstr "Largeur"
2605
-
2606
- #: views/newsletter/templates/blocks/button/settings.hbs:103
2607
- msgid "Height"
2608
- msgstr "Hauteur"
2609
-
2610
- #: views/newsletter/templates/blocks/button/settings.hbs:112
2611
- msgid "Apply styles to all buttons"
2612
- msgstr "Appliquer les styles à tous les boutons"
2613
-
2614
- #: views/newsletter/templates/blocks/container/emptyBlock.hbs:1
2615
- msgid "Add a column block here."
2616
- msgstr "Ajouter un bloc de colonne ici."
2617
-
2618
- #: views/newsletter/templates/blocks/container/emptyBlock.hbs:1
2619
- msgid "Add a content block here."
2620
- msgstr "Ajouter un bloc de contenu ici."
2621
-
2622
- #: views/newsletter/templates/blocks/container/oneColumnLayoutWidget.hbs:4
2623
- msgid "1 column"
2624
- msgstr "1 colonne"
2625
-
2626
- #: views/newsletter/templates/blocks/container/settings.hbs:1
2627
- #: views/newsletter/templates/components/sidebar/layout.hbs:2
2628
- msgid "Columns"
2629
- msgstr "Colonnes"
2630
-
2631
- #: views/newsletter/templates/blocks/container/threeColumnLayoutWidget.hbs:4
2632
- msgid "3 columns"
2633
- msgstr "3 colonnes"
2634
-
2635
- #: views/newsletter/templates/blocks/container/twoColumnLayoutWidget.hbs:4
2636
- msgid "2 columns"
2637
- msgstr "2 colonnes"
2638
-
2639
- #: views/newsletter/templates/blocks/divider/settings.hbs:1
2640
- msgid "Dividers"
2641
- msgstr "Séparateurs"
2642
-
2643
- #: views/newsletter/templates/blocks/divider/settings.hbs:15
2644
- msgid "Divider height"
2645
- msgstr "Hauteur du séparateur"
2646
-
2647
- #: views/newsletter/templates/blocks/divider/settings.hbs:22
2648
- msgid "Divider color"
2649
- msgstr "Couleur du séparateur"
2650
-
2651
- #: views/newsletter/templates/blocks/divider/settings.hbs:32
2652
- msgid "Apply to all dividers"
2653
- msgstr "Appliquer à tous les séparateurs"
2654
-
2655
- #: views/newsletter/templates/blocks/footer/settings.hbs:1
2656
- #: views/newsletter/templates/blocks/footer/widget.hbs:4
2657
- msgid "Footer"
2658
- msgstr "Pied de page"
2659
-
2660
- #: views/newsletter/templates/blocks/footer/settings.hbs:25
2661
- #: views/newsletter/templates/blocks/header/settings.hbs:25
2662
- #: views/newsletter/templates/components/sidebar/styles.hbs:68
2663
- msgid "Underline"
2664
- msgstr "Souligner"
2665
-
2666
- #: views/newsletter/templates/blocks/header/settings.hbs:1
2667
- #: views/newsletter/templates/blocks/header/widget.hbs:4
2668
- msgid "Header"
2669
- msgstr "En-tête"
2670
-
2671
- #: views/newsletter/templates/blocks/image/settings.hbs:1
2672
- #: views/newsletter/templates/blocks/image/widget.hbs:4
2673
- #: views/newsletter/templates/blocks/social/settingsIcon.hbs:27
2674
- msgid "Image"
2675
- msgstr "Image"
2676
-
2677
- #: views/newsletter/templates/blocks/image/settings.hbs:4
2678
- msgid "Optional"
2679
- msgstr "Facultatif"
2680
-
2681
- #: views/newsletter/templates/blocks/image/settings.hbs:12
2682
- msgid "Address"
2683
- msgstr "Adresse"
2684
-
2685
- #: views/newsletter/templates/blocks/image/settings.hbs:20
2686
- msgid "Alternative text"
2687
- msgstr "Texte alternatif"
2688
-
2689
- #: views/newsletter/templates/blocks/image/settings.hbs:36
2690
- msgid "Select another image"
2691
- msgstr "Sélectionner une autre image"
2692
-
2693
- #: views/newsletter/templates/blocks/posts/settings.hbs:6
2694
- msgid "Back to selection"
2695
- msgstr "Retour à la sélection"
2696
-
2697
- #: views/newsletter/templates/blocks/posts/settings.hbs:9
2698
- msgid "Insert selected"
2699
- msgstr "Insérer la sélection"
2700
-
2701
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:75
2702
- msgid "Make the post title into a link"
2703
- msgstr "Faire un lien du titre de l’article"
2704
-
2705
- #: views/newsletter/templates/blocks/posts/settingsDisplayOptions.hbs:105
2706
- msgid "Above block"
2707
- msgstr "Au-dessus du bloc"
2708
-
2709
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:3
2710
- msgid "Search..."
2711
- msgstr "Rechercher&hellip;"
2712
-
2713
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:10
2714
- msgid "Published"
2715
- msgstr "Publié"
2716
-
2717
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:13
2718
- msgid "Pending Review"
2719
- msgstr "En attente de relecture"
2720
-
2721
- #: views/newsletter/templates/blocks/posts/settingsSelection.hbs:14
2722
- msgid "Private"
2723
- msgstr "Privé"
2724
-
2725
- #: views/newsletter/templates/blocks/posts/settingsSelectionEmpty.hbs:1
2726
- msgid "No posts available"
2727
- msgstr "Aucun article disponible"
2728
-
2729
- #: views/newsletter/templates/blocks/social/settings.hbs:1
2730
- msgid "Select icons"
2731
- msgstr "Sélectionner des icônes"
2732
-
2733
- #: views/newsletter/templates/blocks/social/settingsIconSelector.hbs:2
2734
- msgid "Add another social network"
2735
- msgstr "Ajouter un autre réseau social"
2736
-
2737
- #: views/newsletter/templates/blocks/social/widget.hbs:2
2738
- msgid "Social"
2739
- msgstr "Réseaux sociaux"
2740
-
2741
- #: views/newsletter/templates/blocks/spacer/settings.hbs:1
2742
- #: views/newsletter/templates/blocks/spacer/widget.hbs:4
2743
- msgid "Spacer"
2744
- msgstr "Espacement"
2745
-
2746
- #: views/newsletter/templates/components/heading.hbs:6
2747
- msgid "Click here to change the subject!"
2748
- msgstr "Cliquez ici pour changer le sujet !"
2749
-
2750
- #: views/newsletter/templates/components/heading.hbs:13
2751
- msgid ""
2752
- "Preview text (usually displayed underneath the subject line in the inbox)"
2753
- msgstr "Texte d’aperçu (habituellement sous la ligne de sujet dans la boîte de réception)"
2754
-
2755
- #: views/newsletter/templates/components/save.hbs:5 views/newsletters.html:136
2756
- #: views/newsletters.html:213
2757
- msgid "Next"
2758
- msgstr "Suivant"
2759
-
2760
- #: views/newsletter/templates/components/save.hbs:7
2761
- msgid "Autosaved"
2762
- msgstr "Auto-enregistré"
2763
-
2764
- #: views/newsletter/templates/components/save.hbs:10
2765
- #: views/newsletter/templates/components/save.hbs:15
2766
- #: views/newsletter/templates/components/save.hbs:18
2767
- msgid "Save as template"
2768
- msgstr "Enregistrer comme modèle"
2769
-
2770
- #: views/newsletter/templates/components/save.hbs:11
2771
- msgid "Export as template"
2772
- msgstr "Exporter comme modèle"
2773
-
2774
- #: views/newsletter/templates/components/save.hbs:16
2775
- msgid "Insert template name"
2776
- msgstr "Insérer le nom du modèle"
2777
-
2778
- #: views/newsletter/templates/components/save.hbs:17
2779
- msgid "Insert template description"
2780
- msgstr "Insérer la description du modèle"
2781
-
2782
- #: views/newsletter/templates/components/save.hbs:21
2783
- #: views/newsletter/templates/components/save.hbs:24
2784
- msgid "Export template"
2785
- msgstr "Exporter le modèle"
2786
-
2787
- #: views/newsletter/templates/components/save.hbs:22
2788
- msgid "Template name"
2789
- msgstr "Nom du modèle"
2790
-
2791
- #: views/newsletter/templates/components/save.hbs:23
2792
- msgid "Template description"
2793
- msgstr "Description du modèle"
2794
-
2795
- #: views/newsletter/templates/components/sidebar/content.hbs:2
2796
- msgid "Content"
2797
- msgstr "Contenu"
2798
-
2799
- #: views/newsletter/templates/components/sidebar/preview.hbs:8
2800
- msgid "Send preview to"
2801
- msgstr "Envoyer l’aperçu à"
2802
-
2803
- #: views/newsletter/templates/components/sidebar/preview.hbs:14
2804
- msgid "Send preview"
2805
- msgstr "Envoyer un aperçu"
2806
-
2807
- #: views/newsletter/templates/components/sidebar/preview.hbs:20
2808
- msgid "View in browser"
2809
- msgstr "Afficher dans le navigateur"
2810
-
2811
- #: views/newsletter/templates/components/sidebar/styles.hbs:1
2812
- msgid "Click to toggle"
2813
- msgstr "Cliquez pour basculer"
2814
-
2815
- #: views/newsletters.html:25
2816
- msgid "Newsletters"
2817
- msgstr "Newsletters"
2818
-
2819
- #: views/newsletters.html:26
2820
- msgid "Welcome Emails"
2821
- msgstr "E-mails de bienvenue"
2822
-
2823
- #: views/newsletters.html:30
2824
- msgid "Loading newsletters..."
2825
- msgstr "Chargement des newsletters&hellip;"
2826
-
2827
- #: views/newsletters.html:31
2828
- msgid ""
2829
- "Nothing here yet! But, don't fret - there's no reason to get upset. Pretty "
2830
- "soon, you’ll be sending emails faster than a turbo-jet."
2831
- msgstr "Rien ici actuellement ! Mais ne vous inquiétez pas - Il n’y a aucune raison de s’énerver. Très rapidement vous enverrez des e-mails à la vitesse de la lumière."
2832
-
2833
- #: views/newsletters.html:32
2834
- msgid "All newsletters on this page are selected."
2835
- msgstr "Toutes les newsletters de cette page sont sélectionnées."
2836
-
2837
- #: views/newsletters.html:33
2838
- msgid "All %d newsletters are selected."
2839
- msgstr "Toutes les %d newsletters sont sélectionnées."
2840
-
2841
- #: views/newsletters.html:34
2842
- msgid "Select all newsletters on all pages"
2843
- msgstr "Sélectionner toutes les newsletters sur toutes les pages"
2844
-
2845
- #: views/newsletters.html:36
2846
- msgid "%d newsletters were permanently deleted."
2847
- msgstr "%d newsletters ont été définitivement supprimées."
2848
-
2849
- #: views/newsletters.html:45
2850
- #: views/subscribers/importExport/import/step2.html:8
2851
- #: views/subscribers/importExport/import.html:47
2852
- #: views/subscribers/subscribers.html:37
2853
- msgid "Show more details"
2854
- msgstr "Afficher plus de détails"
2855
-
2856
- #: views/newsletters.html:51 views/segments.html:62
2857
- msgid "Current page"
2858
- msgstr "Page actuelle"
2859
-
2860
- #: views/newsletters.html:60 views/newsletters.html:104
2861
- msgid "Subject"
2862
- msgstr "Sujet"
2863
-
2864
- #: views/newsletters.html:62
2865
- msgid "Opened, Clicked, Unsubscribed"
2866
- msgstr "Ouvert, cliqué, désabonné"
2867
-
2868
- #: views/newsletters.html:65
2869
- msgid "History"
2870
- msgstr "Historique"
2871
-
2872
- #: views/newsletters.html:66
2873
- msgid "View history"
2874
- msgstr "Voir l’historique"
2875
-
2876
- #: views/newsletters.html:67 views/segments.html:34
2877
- msgid "Created on"
2878
- msgstr "Date de création"
2879
-
2880
- #: views/newsletters.html:68 views/subscribers/subscribers.html:64
2881
- msgid "Last modified on"
2882
- msgstr "Dernière modification le"
2883
-
2884
- #: views/newsletters.html:69
2885
- msgid "1 newsletter was moved to the trash."
2886
- msgstr "1 newsletter a été déplacée dans la corbeille."
2887
-
2888
- #: views/newsletters.html:70
2889
- msgid "%$1d newsletters were moved to the trash."
2890
- msgstr "%$1d newsletters ont été déplacées dans la corbeille."
2891
-
2892
- #: views/newsletters.html:71
2893
- msgid "1 newsletter was permanently deleted."
2894
- msgstr "1 newsletter a été définitivement supprimée."
2895
-
2896
- #: views/newsletters.html:72
2897
- msgid "%$1d newsletters were permanently deleted."
2898
- msgstr "%$1d newsletters ont été définitivement supprimées."
2899
-
2900
- #: views/newsletters.html:73
2901
- msgid "1 newsletter has been recovered from the trash."
2902
- msgstr "1 newsletter a été récupéré depuis la corbeille."
2903
-
2904
- #: views/newsletters.html:74
2905
- msgid "%$1d newsletters have been recovered from the trash."
2906
- msgstr "%$1d newsletters ont été récupérées depuis la corbeille."
2907
-
2908
- #: views/newsletters.html:79
2909
- msgid "Email \"%$1s\" has been duplicated."
2910
- msgstr "L’e-mail « %$1s » a été dupliqué."
2911
-
2912
- #: views/newsletters.html:80
2913
- msgid "Not sent yet"
2914
- msgstr "Pas encore envoyé"
2915
-
2916
- #: views/newsletters.html:81
2917
- msgid "Scheduled for"
2918
- msgstr "Planifié pour"
2919
-
2920
- #: views/newsletters.html:82
2921
- msgid "Schedule it"
2922
- msgstr "Planifier l’envoi"
2923
-
2924
- #: views/newsletters.html:84
2925
- msgid "Not Active"
2926
- msgstr "Désactivé"
2927
-
2928
- #: views/newsletters.html:85
2929
- msgid "Sent to %$1d of %$2d"
2930
- msgstr "Envoyé à %$1d sur %$2d"
2931
-
2932
- #: views/newsletters.html:86
2933
- msgid "Sent to %$1d subscribers"
2934
- msgstr "Envoyé à %$1d abonnés"
2935
-
2936
- #: views/newsletters.html:87
2937
- msgid "Resume"
2938
- msgstr "Reprendre"
2939
-
2940
- #: views/newsletters.html:88
2941
- msgid "Pause"
2942
- msgstr "Pause"
2943
-
2944
- #: views/newsletters.html:89
2945
- msgid "Paused"
2946
- msgstr "En pause"
2947
-
2948
- #: views/newsletters.html:92
2949
- msgid "This template file appears to be damaged. Please try another one."
2950
- msgstr "Ce fichier de modèle semble endommagé. Veuillez en essayer un autre."
2951
-
2952
- #: views/newsletters.html:93
2953
- msgid "Import a template"
2954
- msgstr "Importer un modèle"
2955
-
2956
- #: views/newsletters.html:94
2957
- msgid "Select a .json file to upload"
2958
- msgstr "Sélectionner un fichier .json à mettre en ligne"
2959
-
2960
- #: views/newsletters.html:95
2961
- msgid "Upload"
2962
- msgstr "Mettre en ligne"
2963
-
2964
- #: views/newsletters.html:96
2965
- msgid "MailPoet's Guide"
2966
- msgstr "Guide de MailPoet"
2967
-
2968
- #: views/newsletters.html:97
2969
- msgid "This is the standard template that comes with MailPoet."
2970
- msgstr "Ceci est le modèle standard fourni avec MailPoet."
2971
-
2972
- #: views/newsletters.html:98
2973
- msgid "You are about to delete the template named \"%$1s\"."
2974
- msgstr "Vous êtes sur le point de supprimer le modèle « %1$s »."
2975
-
2976
- #: views/newsletters.html:102
2977
- msgid "Select a responsive template"
2978
- msgstr "Sélectionner une modèle responsive"
2979
-
2980
- #: views/newsletters.html:105
2981
- msgid "Select type of email"
2982
- msgstr "Sélectionner le type d’e-mail"
2983
-
2984
- #: views/newsletters.html:107
2985
- msgid ""
2986
- "Send a newsletter with images, buttons, dividers, and social bookmarks. Or, "
2987
- "just send a basic text email."
2988
- msgstr "Envoyez une newsletter avec des images, des boutons, des séparateurs et des liens vers les réseaux sociaux. Ou envoyez un e-mail basique en texte."
2989
-
2990
- #: views/newsletters.html:108
2991
- msgid "Create"
2992
- msgstr "Créer"
2993
-
2994
- #: views/newsletters.html:109
2995
- msgid "Welcome Email"
2996
- msgstr "E-mail de bienvenue"
2997
-
2998
- #: views/newsletters.html:110
2999
- msgid ""
3000
- "Automatically send an email (or series of emails) to new subscribers or "
3001
- "WordPress users. Send a day, a week, or a month after they sign up."
3002
- msgstr "Envoi automatique d’un e-mail (ou de séries d’e-mails) aux nouveaux abonnés ou utilisateurs WordPress. Envoi un jour, une semaine ou un mois après leur inscription."
3003
-
3004
- #: views/newsletters.html:111
3005
- msgid "Set up"
3006
- msgstr "Configuration"
3007
-
3008
- #: views/newsletters.html:112
3009
- msgid "Latest Post Notifications"
3010
- msgstr "Notifications d’article récent"
3011
-
3012
- #: views/newsletters.html:113
3013
- msgid ""
3014
- "Let MailPoet email your subscribers with your latest content. You can send "
3015
- "daily, weekly, monthly, or even immediately after publication."
3016
- msgstr "Envoyez un e-mail à vos abonnés avec vos contenus récents quotidiennement, hebdomadairement, mensuellement ou immédiatement après publication."
3017
-
3018
- #: views/newsletters.html:114
3019
- msgid "Select a frequency"
3020
- msgstr "Sélectionner une fréquence"
3021
-
3022
- #: views/newsletters.html:115
3023
- msgid ""
3024
- "Insert [newsletter:total] to show number of posts, [newsletter:post_title] "
3025
- "to show the latest post's title & [newsletter:number] to display the issue "
3026
- "number."
3027
- msgstr "Afficher le nombre d’articles avec [newsletter:total], le titre du dernier article avec [newsletter:post_title] et le numéro de l’envoi avec [newsletter:number]."
3028
-
3029
- #: views/newsletters.html:116 views/settings/mta.html:657
3030
- msgid "Activate"
3031
- msgstr "Activer"
3032
-
3033
- #: views/newsletters.html:117
3034
- msgid "Send this Welcome Email when..."
3035
- msgstr "Envoyer cet e-mail de bienvenue lorsque&hellip;"
3036
-
3037
- #: views/newsletters.html:119
3038
- msgid "Once a day at..."
3039
- msgstr "Une fois par jour à&hellip;"
3040
-
3041
- #: views/newsletters.html:120
3042
- msgid "Weekly on..."
3043
- msgstr "Hebdomadairement le&hellip;"
3044
-
3045
- #: views/newsletters.html:121
3046
- msgid "Monthly on the..."
3047
- msgstr "Mensuellement le&hellip;"
3048
-
3049
- #: views/newsletters.html:122
3050
- msgid "Monthly every..."
3051
- msgstr "Mensuellement chaque&hellip;"
3052
-
3053
- #: views/newsletters.html:123
3054
- msgid "Immediately."
3055
- msgstr "Immédiatement."
3056
-
3057
- #: views/newsletters.html:124
3058
- msgid "Sunday"
3059
- msgstr "dimanche"
3060
-
3061
- #: views/newsletters.html:125
3062
- msgid "Monday"
3063
- msgstr "lundi"
3064
-
3065
- #: views/newsletters.html:126
3066
- msgid "Tuesday"
3067
- msgstr "mardi"
3068
-
3069
- #: views/newsletters.html:127
3070
- msgid "Wednesday"
3071
- msgstr "mercredi"
3072
-
3073
- #: views/newsletters.html:128
3074
- msgid "Thursday"
3075
- msgstr "jeudi"
3076
-
3077
- #: views/newsletters.html:129
3078
- msgid "Friday"
3079
- msgstr "vendredi"
3080
-
3081
- #: views/newsletters.html:130
3082
- msgid "Saturday"
3083
- msgstr "samedi"
3084
-
3085
- #: views/newsletters.html:131
3086
- msgid "1st"
3087
- msgstr "1er"
3088
-
3089
- #: views/newsletters.html:132
3090
- msgid "2nd"
3091
- msgstr "2ème"
3092
-
3093
- #: views/newsletters.html:133
3094
- msgid "3rd"
3095
- msgstr "3ème"
3096
-
3097
- #: views/newsletters.html:134
3098
- msgid "%$1dth"
3099
- msgstr "%$1dth"
3100
-
3101
- #: views/newsletters.html:135
3102
- msgid "last"
3103
- msgstr "dernier"
3104
-
3105
- #: views/newsletters.html:138
3106
- msgid "When is this Welcome Email sent?"
3107
- msgstr "Quand cet e-mail de bienvenue est-il envoyé ?"
3108
-
3109
- #: views/newsletters.html:140
3110
- msgid "When someone subscribes to the list..."
3111
- msgstr "Lorsque quelqu’un s’inscrit à la liste..."
3112
-
3113
- #: views/newsletters.html:141
3114
- msgid "When a new WordPress user is added to your site..."
3115
- msgstr "Lorsqu’un nouvel utilisateur WordPress est ajouté à votre site..."
3116
-
3117
- #: views/newsletters.html:142
3118
- msgid "immediately"
3119
- msgstr "immédiatement"
3120
-
3121
- #: views/newsletters.html:143
3122
- msgid "hour(s) later"
3123
- msgstr "heure(s) après"
3124
-
3125
- #: views/newsletters.html:144
3126
- msgid "day(s) later"
3127
- msgstr "jour(s) après"
3128
-
3129
- #: views/newsletters.html:145
3130
- msgid "week(s) later"
3131
- msgstr "semaine(s) après"
3132
-
3133
- #: views/newsletters.html:147
3134
- msgid "Subject line"
3135
- msgstr "Sujet"
3136
-
3137
- #: views/newsletters.html:148
3138
- msgid ""
3139
- "Be creative! It's the first thing that your subscribers see. Tempt them to "
3140
- "open your email."
3141
- msgstr "Soyez créatif ! C’est la première chose que vos abonnés voient. Donnez leur envie d’ouvrir votre e-mail."
3142
-
3143
- #: views/newsletters.html:149
3144
- msgid "Please specify a subject"
3145
- msgstr "Veuillez spécifier un sujet"
3146
-
3147
- #: views/newsletters.html:151
3148
- msgid "This subscriber segment will be used for this email."
3149
- msgstr "Ce segment d’abonné sera utilisé pour cet e-mail."
3150
-
3151
- #: views/newsletters.html:152 views/subscribers/subscribers.html:55
3152
- msgid "Select a list"
3153
- msgstr "Sélectionner une liste"
3154
-
3155
- #: views/newsletters.html:154
3156
- msgid "Sender"
3157
- msgstr "Expéditeur"
3158
-
3159
- #: views/newsletters.html:155
3160
- msgid "Your name and email"
3161
- msgstr "Votre nom et votre e-mail"
3162
-
3163
- #: views/newsletters.html:156 views/newsletters.html:160
3164
- msgid "John Doe"
3165
- msgstr "Pierre Untel"
3166
-
3167
- #: views/newsletters.html:157 views/newsletters.html:161
3168
- msgid "john.doe@email.com"
3169
- msgstr "pierre.untel@e-mail.fr"
3170
-
3171
- #: views/newsletters.html:158 views/settings/basics.html:29
3172
- #: views/settings/signup.html:85
3173
- msgid "Reply-to"
3174
- msgstr "Répondre à"
3175
-
3176
- #: views/newsletters.html:159
3177
- msgid ""
3178
- "When your subscribers reply to your newsletter, their emails will go to this"
3179
- " address."
3180
- msgstr "Lorsque vos abonnés répondent à votre newsletter, leurs e-mails seront envoyés à cette adresse."
3181
-
3182
- #: views/newsletters.html:162
3183
- msgid "Newsletter was updated successfully!"
3184
- msgstr "La newsletter a bien été mise à jour !"
3185
-
3186
- #: views/newsletters.html:163
3187
- msgid "Newsletter was added successfully!"
3188
- msgstr "La newsletter a bien été ajoutée !"
3189
-
3190
- #: views/newsletters.html:164
3191
- msgid ""
3192
- "An error occurred while trying to send. <a href=\"%$1s\">Please check your "
3193
- "settings</a>."
3194
- msgstr "Une erreur s’est produite lors de la tentative d’envoi. <a href=\"%$1s\">Veuillez vérifier vos réglages</a>."
3195
-
3196
- #: views/newsletters.html:165
3197
- msgid "Final Step: Last Details"
3198
- msgstr "Étape finale : Derniers détails"
3199
-
3200
- #: views/newsletters.html:166
3201
- msgid "Save as draft and close"
3202
- msgstr "Enregistrer comme brouillon et fermer"
3203
-
3204
- #: views/newsletters.html:167
3205
- msgid "or simply"
3206
- msgstr "ou simplement"
3207
-
3208
- #: views/newsletters.html:168
3209
- msgid "go back to the Design page"
3210
- msgstr "Retour à la page de conception"
3211
-
3212
- #: views/newsletters.html:169
3213
- msgid "Your website’s time is"
3214
- msgstr "L’heure de votre site est"
3215
-
3216
- #: views/newsletters.html:170
3217
- msgid "Please enter the scheduled date."
3218
- msgstr "Veuillez saisir la date de planification."
3219
-
3220
- #: views/newsletters.html:171
3221
- msgid "Schedule"
3222
- msgstr "Planifier"
3223
-
3224
- #: views/newsletters.html:173
3225
- msgid "Close"
3226
- msgstr "Fermer"
3227
-
3228
- #: views/newsletters.html:174
3229
- msgid "Today"
3230
- msgstr "Aujourd’hui"
3231
-
3232
- #: views/newsletters.html:187
3233
- msgid "Jan"
3234
- msgstr "Jan"
3235
-
3236
- #: views/newsletters.html:188
3237
- msgid "Feb"
3238
- msgstr "Fév"
3239
-
3240
- #: views/newsletters.html:189
3241
- msgid "Mar"
3242
- msgstr "Mars"
3243
-
3244
- #: views/newsletters.html:190
3245
- msgid "Apr"
3246
- msgstr "Avr"
3247
-
3248
- #: views/newsletters.html:192
3249
- msgid "Jun"
3250
- msgstr "Juin"
3251
-
3252
- #: views/newsletters.html:193
3253
- msgid "Jul"
3254
- msgstr "Juil"
3255
-
3256
- #: views/newsletters.html:194
3257
- msgid "Aug"
3258
- msgstr "Aoû"
3259
-
3260
- #: views/newsletters.html:195
3261
- msgid "Sep"
3262
- msgstr "Sept"
3263
-
3264
- #: views/newsletters.html:196
3265
- msgid "Oct"
3266
- msgstr "Oct"
3267
-
3268
- #: views/newsletters.html:197
3269
- msgid "Nov"
3270
- msgstr "Nov"
3271
-
3272
- #: views/newsletters.html:198
3273
- msgid "Dec"
3274
- msgstr "Déc"
3275
-
3276
- #: views/newsletters.html:199
3277
- msgid "Sun"
3278
- msgstr "Dim"
3279
-
3280
- #: views/newsletters.html:200
3281
- msgid "Mon"
3282
- msgstr "Lun"
3283
-
3284
- #: views/newsletters.html:201
3285
- msgid "Tue"
3286
- msgstr "Mar"
3287
-
3288
- #: views/newsletters.html:202
3289
- msgid "Wed"
3290
- msgstr "Mer"
3291
-
3292
- #: views/newsletters.html:203
3293
- msgid "Thu"
3294
- msgstr "Jeu"
3295
-
3296
- #: views/newsletters.html:204
3297
- msgid "Fri"
3298
- msgstr "Ven"
3299
-
3300
- #: views/newsletters.html:205
3301
- msgid "Sat"
3302
- msgstr "Sam"
3303
-
3304
- #: views/newsletters.html:214
3305
- msgid "Previous"
3306
- msgstr "Précedent"
3307
-
3308
- #: views/newsletters.html:215
3309
- msgid "The newsletter is being sent..."
3310
- msgstr "La newsletter est en cours d’envoi&hellip;"
3311
-
3312
- #: views/newsletters.html:216
3313
- msgid "The newsletter has been scheduled."
3314
- msgstr "La newsletter a bien été planifiée."
3315
-
3316
- #: views/newsletters.html:217
3317
- msgid "Your Welcome Email is now activated!"
3318
- msgstr "Votre e-mail de bienvenue est maintenant activé !"
3319
-
3320
- #: views/newsletters.html:218
3321
- msgid "Your Welcome Email could not be activated, please check the settings."
3322
- msgstr "Votre e-mail de bienvenue ne peut pas être activé. Veuillez vérifier vos réglages."
3323
-
3324
- #: views/newsletters.html:219
3325
- msgid "Your post notification is now active!"
3326
- msgstr "Votre notification d’article est maintenant activée !"
3327
-
3328
- #: views/newsletters.html:220
3329
- msgid "Your Post Notification could not be activated, check the settings."
3330
- msgstr "Votre notification d’article ne peut pas être activée. Veuillez vérifier vos réglages."
3331
-
3332
- #: views/newsletters.html:221
3333
- msgid "This newsletter is sent when someone subscribes to the list: \"%$1s\""
3334
- msgstr "Cette newsletter est envoyée lorsque quelqu’un s’abonne à la liste : « %$1s »"
3335
-
3336
- #: views/newsletters.html:222
3337
- msgid ""
3338
- "This newsletter is sent when a new WordPress user is added to your site"
3339
- msgstr "Cette newsletter est envoyée lorsqu’un nouvel utilisateur WordPress est ajouté à votre site"
3340
-
3341
- #: views/newsletters.html:223
3342
- msgid ""
3343
- "This newsletter is sent when a new WordPress user with the role \"%$1s\" is "
3344
- "added to your site"
3345
- msgstr "Cette newsletter est envoyée lorsqu’un nouvel utilisateur WordPress avec le rôle « %$1s » est ajouté à votre site"
3346
-
3347
- #: views/newsletters.html:224
3348
- msgid "%$1d hour(s) later"
3349
- msgstr "%$1d heure(s) après"
3350
-
3351
- #: views/newsletters.html:225
3352
- msgid "%$1d day(s) later"
3353
- msgstr "%$1d jour(s) après"
3354
-
3355
- #: views/newsletters.html:226
3356
- msgid "%$1d week(s) later"
3357
- msgstr "%$1d semaine(s) après"
3358
-
3359
- #: views/newsletters.html:227
3360
- msgid "Send daily at %$1s"
3361
- msgstr "Envoyer quotidiennement à %$1s"
3362
-
3363
- #: views/newsletters.html:228
3364
- msgid "Send weekly on %$1s at %$2s"
3365
- msgstr "Envoyer hebdomadairement le %$1s à %$2s"
3366
-
3367
- #: views/newsletters.html:229
3368
- msgid "Send monthly on the %$1s at %$2s"
3369
- msgstr "Envoyer mensuellement le %$1s à %$2s"
3370
-
3371
- #: views/newsletters.html:230
3372
- msgid "Send every %$1s %$2s of the month at %$3s"
3373
- msgstr "Envoyer chaque %$1s %$2s du mois à %$3s"
3374
-
3375
- #: views/newsletters.html:231
3376
- msgid "Send immediately"
3377
- msgstr "Envoyer immédiatement"
3378
-
3379
- #: views/newsletters.html:232
3380
- msgid "if there's new content to %$1s."
3381
- msgstr "s’il y a du nouveau contenu pour %$1s."
3382
-
3383
- #: views/newsletters.html:233
3384
- msgid "You need to select a list to send to."
3385
- msgstr "Vous devez sélectionner une liste à laquelle envoyer."
3386
-
3387
- #: views/newsletters.html:235
3388
- msgid "Back to Post notifications"
3389
- msgstr "Retour aux notifications d’article"
3390
-
3391
- #: views/newsletters.html:236
3392
- msgid "Sent on"
3393
- msgstr "Envoyé le"
3394
-
3395
- #: views/newsletters.html:237
3396
- msgid "No subscribers!"
3397
- msgstr "Aucun abonné !"
3398
-
3399
- #: views/newsletters.html:239
3400
- msgid ""
3401
- "Sending is paused because %$1s prevents MailPoet from delivering emails with"
3402
- " the following error: %$2s"
3403
- msgstr "L’envoi est suspendu car %1$s empêche MailPoet d’envoyer les e-mails avec l’erreur suivante : %2$s."
3404
-
3405
- #: views/newsletters.html:240
3406
- msgid ""
3407
- "Sending is paused because the following connection issue prevents MailPoet "
3408
- "from delivering emails: %$1s"
3409
- msgstr "L’envoi est suspendu car l’erreur de connexion suivante empêche MailPoet d’envoyer les e-mails : %1$s"
3410
-
3411
- #: views/newsletters.html:241
3412
- msgid "Check your [link]sending method settings[/link]."
3413
- msgstr "Vérifiez vos [link]réglages de méthode d’envoi[/link]."
3414
-
3415
- #: views/newsletters.html:242
3416
- msgid "Resume sending"
3417
- msgstr "Reprendre l’envoi"
3418
-
3419
- #: views/newsletters.html:243
3420
- msgid "Sending has been resumed."
3421
- msgstr "L’envoi a été relancé."
3422
-
3423
- #: views/segments.html:15
3424
- msgid "Loading lists..."
3425
- msgstr "Chargement des listes&hellip;"
3426
-
3427
- #: views/segments.html:16
3428
- msgid "No lists found"
3429
- msgstr "Aucune liste trouvée"
3430
-
3431
- #: views/segments.html:17
3432
- msgid "All lists on this page are selected."
3433
- msgstr "Toutes les listes de cette page sont sélectionnées."
3434
-
3435
- #: views/segments.html:18
3436
- msgid "All %d lists are selected."
3437
- msgstr "Toutes les %d listes sont sélectionnées."
3438
-
3439
- #: views/segments.html:19
3440
- msgid "Select all lists on all pages"
3441
- msgstr "Sélectionner toutes les listes de toutes les pages"
3442
-
3443
- #: views/segments.html:21
3444
- msgid "%d lists were permanently deleted."
3445
- msgstr "%$1d listes ont été définitivement supprimées."
3446
-
3447
- #: views/segments.html:26 views/subscribers/importExport/import/step2.html:143
3448
- msgid "Description"
3449
- msgstr "Description"
3450
-
3451
- #: views/segments.html:27
3452
- msgid "List successfully updated!"
3453
- msgstr "La liste a bien été mise à jour !"
3454
-
3455
- #: views/segments.html:28
3456
- msgid "List successfully added!"
3457
- msgstr "La liste a bien été ajoutée !"
3458
-
3459
- #: views/segments.html:35
3460
- msgid "1 list was moved to the trash"
3461
- msgstr "1 liste a été déplacée dans la corbeille"
3462
-
3463
- #: views/segments.html:36
3464
- msgid "%$1d lists were moved to the trash"
3465
- msgstr "%$1d listes ont été déplacées dans la corbeille"
3466
-
3467
- #: views/segments.html:37
3468
- msgid "1 list was permanently deleted"
3469
- msgstr "1 liste a été définitivement supprimée"
3470
-
3471
- #: views/segments.html:38
3472
- msgid "%$1d lists were permanently deleted."
3473
- msgstr "%$1d formulaires ont été définitivement supprimés."
3474
-
3475
- #: views/segments.html:39
3476
- msgid "1 list has been restored from the trash"
3477
- msgstr "1 liste a été restaurée depuis la corbeille"
3478
-
3479
- #: views/segments.html:40
3480
- msgid "%$1d lists have been restored from the trash"
3481
- msgstr "%$1d listes ont été restaurées depuis la corbeille"
3482
-
3483
- #: views/segments.html:42
3484
- msgid "List \"%$1s\" has been duplicated"
3485
- msgstr "La liste « %$1s » a été dupliquée"
3486
-
3487
- #: views/segments.html:44
3488
- msgid "Force Sync"
3489
- msgstr "Forcer la synchro"
3490
-
3491
- #: views/segments.html:45
3492
- msgid "Read More"
3493
- msgstr "En savoir plus"
3494
-
3495
- #: views/segments.html:46
3496
- msgid "List \"%$1s\" has been synchronized."
3497
- msgstr "La liste « %$1s » a été synchronisée."
3498
-
3499
- #: views/segments.html:47
3500
- msgid "View Subscribers"
3501
- msgstr "Voir les abonnés"
3502
-
3503
- #: views/segments.html:55
3504
- msgid "Delete permanently"
3505
- msgstr "Supprimer définitivement"
3506
-
3507
- #: views/segments.html:66
3508
- msgid ""
3509
- "This text box is for your own use and is never shown to your subscribers."
3510
- msgstr "Cette boîte de texte est pour votre usage personnel et ne sera jamais affichée à vos abonnés."
3511
-
3512
- #: views/settings/advanced.html:7
3513
- msgid "Bounce email address"
3514
- msgstr "Adresse e-mail de rebond"
3515
-
3516
- #: views/settings/advanced.html:10
3517
- msgid "Your bounced emails will be sent to this address."
3518
- msgstr "Vos e-mails de rebond seront envoyés à cette adresse."
3519
-
3520
- #: views/settings/advanced.html:28
3521
- msgid "Newsletter task scheduler (cron)"
3522
- msgstr "Planificateur de tâche de newsletter (cron)"
3523
-
3524
- #: views/settings/advanced.html:31
3525
- msgid "Select what will activate your newsletter queue."
3526
- msgstr "Sélectionner ce qui activera la file d’attente de votre newsletter."
3527
-
3528
- #: views/settings/advanced.html:34 views/settings/advanced.html:117
3529
- #: views/settings/mta.html:127
3530
- msgid "Read more."
3531
- msgstr "Lire la suite."
3532
-
3533
- #: views/settings/advanced.html:47
3534
- msgid "Visitors to your website (recommended)"
3535
- msgstr "Visiteurs de votre site (recommandé)"
3536
-
3537
- #: views/settings/advanced.html:59
3538
- msgid "MailPoet's own script. Doesn't work with [link]these hosts[/link]."
3539
- msgstr "Script propriétaire de MailPoet. Ne fonctionne pas avec [link]ces hébergeurs[/link]."
3540
-
3541
- #: views/settings/advanced.html:74
3542
- msgid "Open and click tracking"
3543
- msgstr "Suivi d’ouverture et de clic"
3544
-
3545
- #: views/settings/advanced.html:77
3546
- msgid "Enable or disable open and click tracking."
3547
- msgstr "Activer ou désactiver le suivi d’ouverture et de clic."
3548
-
3549
- #: views/settings/advanced.html:110
3550
- msgid "Share anonymous data"
3551
- msgstr "Partage de données anonymes"
3552
-
3553
- #: views/settings/advanced.html:113
3554
- msgid ""
3555
- "Share anonymous data and help us improve the plugin. We appreciate your "
3556
- "help!"
3557
- msgstr "Partagez anonymement vos données et aidez-nous à améliorer l’extension. Nous apprécions votre aide !"
3558
-
3559
- #: views/settings/advanced.html:149
3560
- msgid "Reinstall from scratch"
3561
- msgstr "Réinstallation complète"
3562
-
3563
- #: views/settings/advanced.html:151
3564
- msgid ""
3565
- "Want to start from the beginning? This will completely delete MailPoet and "
3566
- "reinstall it from scratch. Remember: you will lose all of your data!"
3567
- msgstr "Vous voulez repartir de zéro ? Ceci supprimera et réinstallera totalement MailPoet. Rappel : Toutes vos données seront perdues !"
3568
-
3569
- #: views/settings/advanced.html:159
3570
- msgid "Reinstall now..."
3571
- msgstr "Réinstaller maintenant..."
3572
-
3573
- #: views/settings/advanced.html:171
3574
- msgid ""
3575
- "Are you sure? All of your MailPoet data will be permanently erased "
3576
- "(newsletters, statistics, subscribers, etc.)"
3577
- msgstr "Confirmez-vous ? Toutes vos données de MailPoet seront définitivement effacées (newsletters, statistiques, abonnés, etc.)."
3578
-
3579
- #: views/settings/basics.html:6
3580
- msgid "Default sender"
3581
- msgstr "Expéditeur par défaut"
3582
-
3583
- #: views/settings/basics.html:9
3584
- msgid "These email addresses will be selected by default for each new email."
3585
- msgstr "Ces adresses e-mails seront sélectionnées par défaut pour chaque nouvel e-mail."
3586
-
3587
- #: views/settings/basics.html:15 views/settings/signup.html:59
3588
- msgid "From"
3589
- msgstr "De "
3590
-
3591
- #: views/settings/basics.html:20 views/settings/basics.html:34
3592
- #: views/settings/signup.html:69 views/settings/signup.html:95
3593
- msgid "Your name"
3594
- msgstr "Votre nom"
3595
-
3596
- #: views/settings/basics.html:47
3597
- msgid "Email notifications"
3598
- msgstr "Notifications par e-mail"
3599
-
3600
- #: views/settings/basics.html:50
3601
- msgid ""
3602
- "These email addresses will receive notifications (separate each address with"
3603
- " a comma)"
3604
- msgstr "Ces adresses e-mails recevront les notifications (séparez chaque adresse par une virgule)."
3605
-
3606
- #: views/settings/basics.html:68
3607
- msgid "When someone subscribes"
3608
- msgstr "Lorsque quelqu’un s’abonne"
3609
-
3610
- #: views/settings/basics.html:78
3611
- msgid "When someone unsubscribes"
3612
- msgstr "Lorsque quelqu’un se désabonne"
3613
-
3614
- #: views/settings/basics.html:88
3615
- msgid "Subscribe in comments"
3616
- msgstr "Inscription dans les commentaires"
3617
-
3618
- #: views/settings/basics.html:91
3619
- msgid ""
3620
- "Visitors that comment on a post can subscribe to your list via a checkbox."
3621
- msgstr "Les visiteurs qui commentent un article peuvent s’abonner à une liste via une case à cocher."
3622
-
3623
- #: views/settings/basics.html:115 views/settings/basics.html:179
3624
- msgid "Yes, add me to your mailing list"
3625
- msgstr "Oui, ajoutez-moi à votre liste de diffusion."
3626
-
3627
- #: views/settings/basics.html:120 views/settings/basics.html:184
3628
- msgid "Users will be subscribed to these lists:"
3629
- msgstr "Les utilisateurs seront abonnés à ces listes :"
3630
-
3631
- #: views/settings/basics.html:126 views/settings/basics.html:190
3632
- msgid "Choose a list"
3633
- msgstr "Choisir une liste"
3634
-
3635
- #: views/settings/basics.html:148
3636
- msgid "Subscribe in registration form"
3637
- msgstr "Abonnement dans le formulaire d’inscription"
3638
-
3639
- #: views/settings/basics.html:151
3640
- msgid ""
3641
- "Allow users who register as a WordPress user on your website to subscribe to"
3642
- " a MailPoet list (in addition to the \"WordPress Users\" list.)"
3643
- msgstr "Autoriser les utilisateurs enregistrés sur votre site en tant qu’utilisateur à s’abonner à une liste MailPoet (en plus de la liste des « Utilisateurs WordPress »)."
3644
-
3645
- #: views/settings/basics.html:206
3646
- msgid "Registration is disabled on this site."
3647
- msgstr "Les inscriptions sont désactivées sur ce site."
3648
-
3649
- #: views/settings/basics.html:215
3650
- msgid "Manage Subscription page"
3651
- msgstr "Page de gestion d’abonnement"
3652
-
3653
- #: views/settings/basics.html:218
3654
- msgid ""
3655
- "When your subscribers click the \"Manage your subscription\" link, they will"
3656
- " be directed to this page."
3657
- msgstr "Lorsque vos abonnés cliquent sur le lien « Gérer votre abonnement », ils seront redirigés vers cette page."
3658
-
3659
- #: views/settings/basics.html:241 views/settings/basics.html:298
3660
- #: views/settings/signup.html:176
3661
- msgid "Preview page"
3662
- msgstr "Prévisualiser la page"
3663
-
3664
- #: views/settings/basics.html:245
3665
- msgid "Subscribers can choose from these lists:"
3666
- msgstr "Les abonnés peuvent choisir parmi ces listes :"
3667
-
3668
- #: views/settings/basics.html:251 views/settings/basics.html:329
3669
- #: views/settings/basics.html:365
3670
- msgid "Leave this field empty to display all lists"
3671
- msgstr "Laissez ce champ vide pour afficher toutes les listes"
3672
-
3673
- #: views/settings/basics.html:270
3674
- msgid "Unsubscribe page"
3675
- msgstr "Page de désabonnement"
3676
-
3677
- #: views/settings/basics.html:273
3678
- msgid ""
3679
- "When your subscribers click the \"Unsubscribe\" link, they will be directed "
3680
- "to this page."
3681
- msgstr "Lorsque vos abonnés cliquent sur le lien « Se désabonner », ils seront redirigés vers cette page."
3682
-
3683
- #: views/settings/basics.html:275
3684
- msgid ""
3685
- "If you want to use a custom Unsubscribe page, simply paste this shortcode on"
3686
- " to a WordPress page: [mailpoet_manage text=\"Manage your subscription\"]"
3687
- msgstr "Si vous voulez utiliser une page de désabonnement personnalisée, collez simplement ce code court dans la page : [mailpoet_manage_text=\"Gérer votre abonnement\"]"
3688
-
3689
- #: views/settings/basics.html:307
3690
- msgid "Archive page shortcode"
3691
- msgstr "Code court de la page d’archive"
3692
-
3693
- #: views/settings/basics.html:310
3694
- msgid "Paste this shortcode on a page to display a list of past newsletters."
3695
- msgstr "Collez ce code court dans une page pour afficher une liste des newsletters précédentes."
3696
-
3697
- #: views/settings/basics.html:343
3698
- msgid "Shortcode to display total number of subscribers"
3699
- msgstr "Code court pour afficher le nombre total d’abonnés"
3700
-
3701
- #: views/settings/basics.html:346
3702
- msgid ""
3703
- "Paste this shortcode on a post or page to display the total number of "
3704
- "confirmed subscribers."
3705
- msgstr "Collez ce code court dans une page ou un article pour afficher le nombre total des abonnés confirmés."
3706
-
3707
- #: views/settings/bounce.html:1
3708
- msgid "How Does This Work?"
3709
- msgstr "Comment cela fonctionne-t-il ?"
3710
-
3711
- #: views/settings/bounce.html:4
3712
- msgid "Create an email account dedicated solely to handling bounced emails."
3713
- msgstr "Créez un compte e-mail dédié uniquement à la gestion des e-mails de rebond."
3714
-
3715
- #: views/settings/bounce.html:7
3716
- msgid "Fill out the form below so that we can connect to it."
3717
- msgstr "Remplissez le formulaire ci-dessous pour que nous puissions nous y connecter."
3718
-
3719
- #: views/settings/bounce.html:10
3720
- msgid "Sit back, relax, and let the plugin do the rest."
3721
- msgstr "Installez-vous confortablement, soufflez et laissez l’extension s’occuper du reste."
3722
-
3723
- #: views/settings/bounce.html:16
3724
- msgid "Need help? Check out %1$sour guide%2$s on how to fill out this form."
3725
- msgstr "Besoin d’aide ? Lisez %1$snotre guide%2$s sur la façon de remplir ce formulaire."
3726
-
3727
- #: views/settings/bounce.html:32
3728
- msgid "Hostname"
3729
- msgstr "Nom d’hôte"
3730
-
3731
- #: views/settings/bounce.html:50 views/settings/mta.html:515
3732
- msgid "Login"
3733
- msgstr "Identifiant"
3734
-
3735
- #: views/settings/bounce.html:67 views/settings/mta.html:532
3736
- msgid "Password"
3737
- msgstr "Mot de passe"
3738
-
3739
- #: views/settings/bounce.html:84
3740
- msgid "Connection method"
3741
- msgstr "Méthode de connexion"
3742
-
3743
- #: views/settings/bounce.html:110
3744
- msgid "POP3 without IMAP extension"
3745
- msgstr "POP3 sans extension IMAP"
3746
-
3747
- #: views/settings/bounce.html:125
3748
- msgid "Port"
3749
- msgstr "Port"
3750
-
3751
- #: views/settings/bounce.html:143
3752
- msgid "Secure connection"
3753
- msgstr "Connexion sécurisée"
3754
-
3755
- #: views/settings/bounce.html:167
3756
- msgid "Self-signed certificate"
3757
- msgstr "Certificat auto-signé"
3758
-
3759
- #: views/settings/bounce.html:198
3760
- msgid "Activate bounce and check every..."
3761
- msgstr "Activez et vérifiez comme vous voulez : "
3762
-
3763
- #: views/settings/bounce.html:222
3764
- msgid "15 minutes"
3765
- msgstr "15 minutes"
3766
-
3767
- #: views/settings/bounce.html:228
3768
- msgid "30 minutes"
3769
- msgstr "30 minutes"
3770
-
3771
- #: views/settings/bounce.html:234
3772
- msgid "1 hour"
3773
- msgstr "1 heure"
3774
-
3775
- #: views/settings/bounce.html:240
3776
- msgid "2 hours"
3777
- msgstr "2 heures"
3778
-
3779
- #: views/settings/bounce.html:246
3780
- msgid "Twice daily"
3781
- msgstr "Deux fois par jour"
3782
-
3783
- #: views/settings/bounce.html:266
3784
- msgid "Is it working? Try to connect"
3785
- msgstr "Cela fonctionne ? Essayez de vous connecter"
3786
-
3787
- #: views/settings/mta.html:61
3788
- msgid "You're now sending with MailPoet!"
3789
- msgstr "Vous effectuez maintenant vos envois avec MailPoet !"
3790
-
3791
- #: views/settings/mta.html:63
3792
- msgid ""
3793
- "Great, you're all set up. Your emails will now be sent quickly and reliably!"
3794
- msgstr "Bravo, la configuration est terminée. Vos e-mails vont maintenant être envoyés rapidement et de manière fiable !"
3795
-
3796
- #: views/settings/mta.html:70
3797
- msgid "Solve all of your sending problems!"
3798
- msgstr "Réglez tous vos problèmes d’envoi !"
3799
-
3800
- #: views/settings/mta.html:72
3801
- msgid ""
3802
- "We offer affordable email packages with speeds up to 50 times faster than "
3803
- "the competition."
3804
- msgstr "Nous offrons des forfaits e-mail abordables allant jusqu'à 50 fois plus vite que la concurrence."
3805
-
3806
- #: views/settings/mta.html:79
3807
- msgid "View Email Plans"
3808
- msgstr "Voir les formules d’e-mail"
3809
-
3810
- #: views/settings/mta.html:83 views/settings/mta.html:105
3811
- #: views/settings/mta.html:131
3812
- msgid "Activated"
3813
- msgstr "Activé"
3814
-
3815
- #: views/settings/mta.html:89 views/settings/mta.html:111
3816
- #: views/settings/mta.html:137
3817
- msgid "Configure"
3818
- msgstr "Configurer"
3819
-
3820
- #: views/settings/mta.html:96
3821
- msgid "Your web host / web server"
3822
- msgstr "Votre hébergeur/serveur web"
3823
-
3824
- #: views/settings/mta.html:99
3825
- msgid "Free, but not recommended"
3826
- msgstr "Gratuit, mais non recommandé"
3827
-
3828
- #: views/settings/mta.html:101
3829
- msgid ""
3830
- "Web hosts generally have a bad reputation as a sender. Your newsletter will "
3831
- "probably be considered spam."
3832
- msgstr "Les hébergeurs ont souvent une mauvaise réputation d’expéditeur. Votre newsletter sera probablement considérée comme un indésirable."
3833
-
3834
- #: views/settings/mta.html:118
3835
- msgid "Third-party"
3836
- msgstr "Tiers"
3837
-
3838
- #: views/settings/mta.html:121
3839
- msgid "For SMTP, SendGrid or Amazon SES"
3840
- msgstr "Pour SMTP, SendGrid ou Amazon SES"
3841
-
3842
- #: views/settings/mta.html:123
3843
- msgid ""
3844
- "We only recommend using a third-party service if you are a technical user. "
3845
- "Tread carefully."
3846
- msgstr "Nous recommandons l’utilisation de services tiers uniquement aux techniciens. À utiliser avec prudence."
3847
-
3848
- #: views/settings/mta.html:149
3849
- msgid "Already have a key?"
3850
- msgstr "Vous avez déjà votre clé ?"
3851
-
3852
- #: views/settings/mta.html:155
3853
- msgid "Your key"
3854
- msgstr "Votre clé"
3855
-
3856
- #: views/settings/mta.html:169
3857
- #: views/subscribers/importExport/import/step1.html:84
3858
- msgid "Verify"
3859
- msgstr "Vérifier"
3860
-
3861
- #: views/settings/mta.html:186 views/settings/mta.html:319
3862
- msgid "Sending frequency"
3863
- msgstr "Fréquence d’envoi"
3864
-
3865
- #: views/settings/mta.html:197
3866
- msgid "Safe default values"
3867
- msgstr "Valeur sure par défaut"
3868
-
3869
- #: views/settings/mta.html:205
3870
- msgid "I'll set my own frequency"
3871
- msgstr "Je règlerai ma propre fréquence"
3872
-
3873
- #: views/settings/mta.html:210
3874
- msgid "Input your host's recommended sending frequency"
3875
- msgstr "Sélectionner la fréquence recommandée par votre hébergeur."
3876
-
3877
- #: views/settings/mta.html:243 views/settings/mta.html:336
3878
- msgid "emails"
3879
- msgstr "e-mails"
3880
-
3881
- #: views/settings/mta.html:260 views/settings/mta.html:353
3882
- msgid "recommended"
3883
- msgstr "recommandé"
3884
-
3885
- #: views/settings/mta.html:269
3886
- msgid ""
3887
- "<strong>Warning!</strong> Sending more than the recommended amount of "
3888
- "emails? You may break the terms of your web host or provider!"
3889
- msgstr "<strong>Avertissement !</strong> Vous envoyez plus d’e-mails que le nombre recommandé ? Vous pourriez rompre les termes de votre contrat avec votre hébergeur ou fournisseur !"
3890
-
3891
- #: views/settings/mta.html:271
3892
- msgid ""
3893
- "Please ask your host for the maximum number of emails you are allowed to "
3894
- "send per day."
3895
- msgstr "Veuillez demander à votre hébergeur le nombre maximum d’e-mails que vous êtes autorisé à envoyer par jour."
3896
-
3897
- #: views/settings/mta.html:287
3898
- msgid "Provider"
3899
- msgstr "Fournisseur"
3900
-
3901
- #: views/settings/mta.html:297
3902
- msgid "Custom SMTP"
3903
- msgstr "SMTP personnalisé"
3904
-
3905
- #: views/settings/mta.html:300
3906
- msgid "Select your provider"
3907
- msgstr "Sélectionnez votre fournisseur"
3908
-
3909
- #: views/settings/mta.html:366
3910
- msgid "SMTP Hostname"
3911
- msgstr "Nom d’hôte SMTP"
3912
-
3913
- #: views/settings/mta.html:369 views/settings/mta.html:480
3914
- msgid "e.g.: smtp.mydomain.com"
3915
- msgstr "p.ex. : smtp.mondomaine.com"
3916
-
3917
- #: views/settings/mta.html:385
3918
- msgid "SMTP Port"
3919
- msgstr "Port SMTP"
3920
-
3921
- #: views/settings/mta.html:406
3922
- msgid "Region"
3923
- msgstr "Région"
3924
-
3925
- #: views/settings/mta.html:435
3926
- msgid "Access Key"
3927
- msgstr "Clé d’accès"
3928
-
3929
- #: views/settings/mta.html:456
3930
- msgid "Secret Key"
3931
- msgstr "Clé secrète"
3932
-
3933
- #: views/settings/mta.html:477
3934
- msgid "Domain"
3935
- msgstr "Domaine"
3936
-
3937
- #: views/settings/mta.html:497
3938
- msgid "API Key"
3939
- msgstr "Clé API"
3940
-
3941
- #: views/settings/mta.html:549
3942
- msgid "Secure Connection"
3943
- msgstr "Connexion sécurisée"
3944
-
3945
- #: views/settings/mta.html:574
3946
- msgid "Authentication"
3947
- msgstr "Authentification"
3948
-
3949
- #: views/settings/mta.html:577
3950
- msgid ""
3951
- "Leave this option set to Yes. Only a tiny portion of SMTP services prefer "
3952
- "Authentication to be turned off."
3953
- msgstr "Laissez cette option sur Oui. Seul un petit nombre de services préfère que l’authentification soit désactivée."
3954
-
3955
- #: views/settings/mta.html:616
3956
- msgid "SPF Signature (Highly recommended!)"
3957
- msgstr "Signature SPF (hautement recommandé !)"
3958
-
3959
- #: views/settings/mta.html:619
3960
- msgid ""
3961
- "This improves your delivery rate by verifying that you're allowed to send "
3962
- "emails from your domain."
3963
- msgstr "Cela améliore votre taux de délivrabilité en vérifiant que vous êtes autorisé à envoyer des e-mails depuis votre domaine."
3964
-
3965
- #: views/settings/mta.html:624
3966
- msgid ""
3967
- "SPF is set up in your DNS. Read your host's support documentation for more "
3968
- "information."
3969
- msgstr "Le protocole SPF est configuré dans votre DNS. Référez-vous à la documentation de votre hébergeur pour plus d’informations."
3970
-
3971
- #: views/settings/mta.html:632
3972
- msgid "Test the sending method"
3973
- msgstr "Test de la méthode d’envoi"
3974
-
3975
- #: views/settings/mta.html:646
3976
- msgid "Send a test email"
3977
- msgstr "Envoyer un e-mail de test"
3978
-
3979
- #: views/settings/mta.html:662
3980
- msgid "or Cancel"
3981
- msgstr "ou annuler"
3982
-
3983
- #: views/settings/mta.html:707
3984
- msgid ""
3985
- "The email could not be sent. Make sure the option \"Email notifications\" "
3986
- "has a FROM email address in the Basics tab."
3987
- msgstr "L’e-mail n’a pas pu être envoyé. Assurez vous que l’option « Notifications par e-mail » possède une adresse e-mail DE dans l’onglet Essentiels."
3988
-
3989
- #: views/settings/mta.html:719
3990
- msgid "This is a Sending Method Test"
3991
- msgstr "Ceci est un test de la méthode d’envoi"
3992
-
3993
- #: views/settings/mta.html:721
3994
- msgid "Yup, it works! You can start blasting away emails to the moon."
3995
- msgstr "Parfait, cela fonctionne ! Vous pouvez commencer à envoyer des e-mails vers la Lune."
3996
-
3997
- #: views/settings/mta.html:734
3998
- msgid "The email has been sent! Check your inbox."
3999
- msgstr "L’e-mail a bien été envoyé ! Vérifiez votre boîte de réception."
4000
-
4001
- #: views/settings/mta.html:755
4002
- msgid "Please specify an API key before validating it."
4003
- msgstr "Veuillez spécifier une clé API avant de valider ceci."
4004
-
4005
- #: views/settings/mta.html:815
4006
- msgid "You have selected an invalid sending method."
4007
- msgstr "Vous avez sélectionné une méthode d’envoi non valide."
4008
-
4009
- #: views/settings/mta.html:823
4010
- msgid "You need to specify a MailPoet account key."
4011
- msgstr "Vous devez spécifier une clé de compte MailPoet."
4012
-
4013
- #: views/settings/signup.html:7
4014
- msgid "Enable sign-up confirmation"
4015
- msgstr "Activer la confirmation d’abonnement"
4016
-
4017
- #: views/settings/signup.html:10
4018
- msgid ""
4019
- "If you enable this option, your subscribers will first receive a "
4020
- "confirmation email after they subscribe. Once they confirm their "
4021
- "subscription (via this email), they will be marked as 'confirmed' and will "
4022
- "begin to receive your email newsletters."
4023
- msgstr "Si vous activez cette option, vos abonnés recevront un e-mail de confirmation après leur inscription. Une fois leur inscription confirmée (depuis cet e-mail), ils seront marqués comme « confirmé » et commenceront à recevoir vos newsletters."
4024
-
4025
- #: views/settings/signup.html:11
4026
- msgid "Read more about Double Opt-in confirmation."
4027
- msgstr "En savoir plus à propos de la double confirmation."
4028
-
4029
- #: views/settings/signup.html:19
4030
- msgid ""
4031
- "Sign-up confirmation is mandatory when using the MailPoet Sending Service."
4032
- msgstr "La confirmation d’inscription est obligatoire pour l’utilisation du service d’envoi de MailPoet."
4033
-
4034
- #: views/settings/signup.html:111
4035
- msgid "Email subject"
4036
- msgstr "Sujet de l’e-mail"
4037
-
4038
- #: views/settings/signup.html:130
4039
- msgid "Email content"
4040
- msgstr "Contenu de l’e-mail"
4041
-
4042
- #: views/settings/signup.html:133
4043
- msgid ""
4044
- "Don't forget to include:<br /><br />[activation_link]Confirm your "
4045
- "subscription.[/activation_link].<br /><br />Optional: [lists_to_confirm]."
4046
- msgstr "N’oubliez pas d’inclure :<br /><br />[activation_link]Confirmer votre abonnement.[/activation_link].<br /><br />Facultatif : [lists_to_confirm]."
4047
-
4048
- #: views/settings/signup.html:151
4049
- msgid "Confirmation page"
4050
- msgstr "Page de confirmation"
4051
-
4052
- #: views/settings/signup.html:154
4053
- msgid ""
4054
- "When subscribers click on the activation link, they will be redirected to "
4055
- "this page."
4056
- msgstr "Lorsque les abonnés cliquent sur le lien d’activation, ils seront redirigés vers cette page."
4057
-
4058
- #: views/settings/signup.html:195
4059
- msgid ""
4060
- "Subscribers will need to activate their subscription via email in order to "
4061
- "receive your newsletters. This is highly recommended!"
4062
- msgstr "Les abonnés devront activer leur abonnement depuis l’e-mail afin de recevoir vos newsletters. Ceci est fortement recommandée."
4063
-
4064
- #: views/settings/signup.html:197
4065
- msgid ""
4066
- "New subscribers will be automatically confirmed, without having to confirm "
4067
- "their subscription. This is not recommended!"
4068
- msgstr "Les nouveaux abonnés seront automatiquement confirmés sans avoir à confirmer leur abonnement. Ceci n’est pas recommandé !"
4069
-
4070
- #: views/settings/templates/sending_frequency.hbs:4
4071
- msgid "%1$s emails"
4072
- msgstr "%1$s e-mails"
4073
-
4074
- #: views/settings/templates/sending_frequency.hbs:11
4075
- msgid "That's <strong>%1$s emails</strong> per day"
4076
- msgstr "Cela correspond à <strong>%1$s e-mails</strong> par jour."
4077
-
4078
- #: views/settings/templates/sending_frequency.hbs:20
4079
- msgid ""
4080
- "That's %1$s emails per second. <strong>We highly recommend to send 1 email "
4081
- "per second, at the absolute maximum.</strong> MailPoet needs at least one "
4082
- "second to process and send a single email (on most hosts.) "
4083
- "<strong>Alternatively, send with MailPoet, which can be up to 50 times "
4084
- "faster.</strong>"
4085
- msgstr "C’est %1$s e-mails par seconde. <strong>Nous recommandons fortement d’envoyer un e-mail par seconde au maximum.</strong> MailPoet a besoin d’au moins une seconde pour traiter et envoyer un e-mail (sur la plupart des hébergeurs).<strong> Vous pouvez également envoyer avec MailPoet, ce qui peut être jusqu'à 50 fois plus rapide.</strong>"
4086
-
4087
- #: views/settings.html:18
4088
- msgid "Basics"
4089
- msgstr "Essentiels"
4090
-
4091
- #: views/settings.html:19
4092
- msgid "Sign-up Confirmation"
4093
- msgstr "Confirmation d’abonnement"
4094
-
4095
- #: views/settings.html:20
4096
- msgid "Send With..."
4097
- msgstr "Envoyez avec&hellip;"
4098
-
4099
- #: views/settings.html:21
4100
- msgid "Advanced"
4101
- msgstr "Avancés"
4102
-
4103
- #: views/settings.html:84
4104
- msgid "Settings saved"
4105
- msgstr "Réglages enregistrées"
4106
-
4107
- #: views/subscribers/importExport/export.html:7
4108
- #: views/subscribers/importExport/import.html:8
4109
- msgid "Back to Subscribers"
4110
- msgstr "Retour aux abonnés"
4111
-
4112
- #: views/subscribers/importExport/export.html:11
4113
- msgid "Yikes! Couldn't find any subscribers"
4114
- msgstr "Aïe ! Impossible de trouver un seul abonné"
4115
-
4116
- #: views/subscribers/importExport/export.html:27
4117
- msgid "Export confirmed subscribers only"
4118
- msgstr "Exporter uniquement les abonnés confirmés"
4119
-
4120
- #: views/subscribers/importExport/export.html:48
4121
- msgid "Pick a list"
4122
- msgstr "Sélectionner une liste"
4123
-
4124
- #: views/subscribers/importExport/export.html:59
4125
- msgid "List of fields to export"
4126
- msgstr "Liste des champs à exporter"
4127
-
4128
- #: views/subscribers/importExport/export.html:69
4129
- msgid "Group subscribers by list"
4130
- msgstr "Grouper les abonnés par liste"
4131
-
4132
- #: views/subscribers/importExport/export.html:78
4133
- msgid "Format"
4134
- msgstr "Format"
4135
-
4136
- #: views/subscribers/importExport/export.html:84
4137
- msgid "CSV file"
4138
- msgstr "Fichier CSV"
4139
-
4140
- #: views/subscribers/importExport/export.html:89
4141
- msgid "Excel file"
4142
- msgstr "Fichier Excel"
4143
-
4144
- #: views/subscribers/importExport/export.html:124
4145
- #: views/subscribers/importExport/import.html:36
4146
- msgid "Server error:"
4147
- msgstr "Erreur serveur :"
4148
-
4149
- #: views/subscribers/importExport/export.html:125
4150
- msgid ""
4151
- "%1$s subscribers were exported. Get the exported file [link]here[/link]."
4152
- msgstr "%1$s abonnés ont été exportés. Récupérez le fichier d’exportation [link]ici[/link]."
4153
-
4154
- #: views/subscribers/importExport/import/step1.html:8
4155
- msgid "How would you like to import subscribers?"
4156
- msgstr "Comment voulez-vous importer vos abonnés ?"
4157
-
4158
- #: views/subscribers/importExport/import/step1.html:13
4159
- msgid "Paste the data into a text box"
4160
- msgstr "Coller les données dans une boîte de texte"
4161
-
4162
- #: views/subscribers/importExport/import/step1.html:15
4163
- #: views/subscribers/importExport/import/step1.html:55
4164
- msgid "Upload a file"
4165
- msgstr "Importer un fichier"
4166
-
4167
- #: views/subscribers/importExport/import/step1.html:17
4168
- msgid "Import from MailChimp"
4169
- msgstr "Importer depuis MailChimp"
4170
-
4171
- #: views/subscribers/importExport/import/step1.html:31
4172
- msgid "Copy and paste your subscribers from Excel/Spreadsheets"
4173
- msgstr "Copiez et collez vos abonnés depuis Excel/Feuille de calcul"
4174
-
4175
- #: views/subscribers/importExport/import/step1.html:79
4176
- msgid "Enter your MailChimp API key"
4177
- msgstr "Saisissez votre clé API MailChimp"
4178
-
4179
- #: views/subscribers/importExport/import/step1.html:91
4180
- msgid "Select list(s)"
4181
- msgstr "Sélectionner une ou plusieurs listes"
4182
-
4183
- #: views/subscribers/importExport/import/step1.html:116
4184
- msgid "[link]Read more at our Knowledge Base[/link]"
4185
- msgstr "[link]En savoir plus dans notre base de connaissances[/link]"
4186
-
4187
- #: views/subscribers/importExport/import/step2.html:36
4188
- msgid "Pick one or more list(s)"
4189
- msgstr "Choisissez une ou plusieurs listes"
4190
-
4191
- #: views/subscribers/importExport/import/step2.html:37
4192
- msgid "Pick the list that you want to import these subscribers to."
4193
- msgstr "Choisissez la liste dans laquelle vous voulez importer ces abonnés."
4194
-
4195
- #: views/subscribers/importExport/import/step2.html:42
4196
- msgid "Create a new list"
4197
- msgstr "Créer un nouvelle liste"
4198
-
4199
- #: views/subscribers/importExport/import/step2.html:48
4200
- msgid "To add subscribers to a mailing segment, [link]create a list[/link]."
4201
- msgstr "Pour ajouter des abonnés à un segment de mailing, [link]créez une liste[/link]."
4202
-
4203
- #: views/subscribers/importExport/import/step2.html:60
4204
- msgid "Update existing subscribers' information"
4205
- msgstr "Mettre à jour les informations de cet abonné"
4206
-
4207
- #: views/subscribers/importExport/import/step2.html:77
4208
- msgid "Previous step"
4209
- msgstr "Étape précédente"
4210
-
4211
- #: views/subscribers/importExport/import/step2.html:80
4212
- msgid "Next step"
4213
- msgstr "Étape suivante"
4214
-
4215
- #: views/subscribers/importExport/import/step2.html:90
4216
- msgid "Match data"
4217
- msgstr "Correspondance des champs"
4218
-
4219
- #: views/subscribers/importExport/import/step3.html:11
4220
- msgid "Import again"
4221
- msgstr "Importer à nouveau"
4222
-
4223
- #: views/subscribers/importExport/import/step3.html:14
4224
- msgid "View subscribers"
4225
- msgstr "Afficher les abonnés"
4226
-
4227
- #: views/subscribers/importExport/import/step3.html:28
4228
- msgid "No subscribers were added or updated."
4229
- msgstr "Aucun nouvel abonné n’a été ajouté ou mis à jour."
4230
-
4231
- #: views/subscribers/importExport/import/step3.html:31
4232
- msgid "Note: Imported subscribers will not receive any Welcome Emails"
4233
- msgstr "Note : Les abonnés importés ne recevront aucun e-mail de bienvenue."
4234
-
4235
- #: views/subscribers/importExport/import.html:1
4236
- msgid ""
4237
- "This file needs to be formatted in a CSV style (comma-separated-values.) "
4238
- "Look at some [link]examples on our support site[/link]."
4239
- msgstr "Ce fichier doit être au format CSV (séparé par des virgules). Consultez quelques [link]exemples sur notre site de support[/link]."
4240
-
4241
- #: views/subscribers/importExport/import.html:35
4242
- msgid "No active lists found"
4243
- msgstr "Aucune liste active trouvée"
4244
-
4245
- #: views/subscribers/importExport/import.html:37
4246
- msgid "Selecto"
4247
- msgstr "Sélection"
4248
-
4249
- #: views/subscribers/importExport/import.html:39
4250
- msgid "Only comma-separated (CSV) file formats are supported."
4251
- msgstr "Seuls les fichiers au format CSV (séparé par des virgules) sont pris en charge."
4252
-
4253
- #: views/subscribers/importExport/import.html:40
4254
- msgid ""
4255
- "Your CSV is over %s and is too big to process. Please split the file into "
4256
- "two or more sections."
4257
- msgstr "Votre fichier CSV dépasse les %s et il est trop volumineux pour être traité correctement. Veuillez le découper en deux, ou plus si nécessaire."
4258
-
4259
- #: views/subscribers/importExport/import.html:41
4260
- msgid ""
4261
- "Your data could not be processed. Please make sure it is in the correct "
4262
- "format."
4263
- msgstr "Vos données ne peuvent pas être traitées. Veuillez vous assurer qu’elles sont au bon format."
4264
-
4265
- #: views/subscribers/importExport/import.html:42
4266
- msgid ""
4267
- "No valid records were found. This file needs to be formatted in a CSV style "
4268
- "(comma-separated.) Look at some [link]examples on our support site.[/link]"
4269
- msgstr "Aucun enregistrement valide n’a été trouvé. Ce fichier doit être au format CSV (séparé par des virgules). Consultez quelques [link]exemples sur notre site de support[/link]."
4270
-
4271
- #: views/subscribers/importExport/import.html:43
4272
- msgid "%1$s records had issues and were skipped."
4273
- msgstr "%1$s enregistrements avaient des erreurs et ont été ignorés."
4274
-
4275
- #: views/subscribers/importExport/import.html:44
4276
- msgid "%1$s emails are not valid: %2$s"
4277
- msgstr "%1$s e-mails ne sont pas valides : %2$s"
4278
-
4279
- #: views/subscribers/importExport/import.html:45
4280
- msgid "%1$s emails appear more than once in your file: %2$s"
4281
- msgstr "%1$s e-mails apparaissent plus d’une fois dans votre fichier : %2$s."
4282
-
4283
- #: views/subscribers/importExport/import.html:46
4284
- msgid "Hide details"
4285
- msgstr "Masquer les détails"
4286
-
4287
- #: views/subscribers/importExport/import.html:49
4288
- #: views/subscribers/importExport/import.html:51
4289
- msgid "Add new list"
4290
- msgstr "Ajouter une nouvelle liste"
4291
-
4292
- #: views/subscribers/importExport/import.html:53
4293
- msgid "The selected value is already matched to another field."
4294
- msgstr "La valeur sélectionnée correspond déjà à un autre champ."
4295
-
4296
- #: views/subscribers/importExport/import.html:54
4297
- msgid "Confirm that this field corresponds to the selected field."
4298
- msgstr "Confirmez que ce champ correspond au champ sélectionné."
4299
-
4300
- #: views/subscribers/importExport/import.html:55
4301
- msgid ""
4302
- "One of the fields contains an invalid email. Please fix it before "
4303
- "continuing."
4304
- msgstr "Un de ces champs contient un e-mail non valide. Veuillez le corriger avant de continuer."
4305
-
4306
- #: views/subscribers/importExport/import.html:68
4307
- msgid ""
4308
- "Do not match as a 'date field' if most of the rows for that field return the"
4309
- " same error."
4310
- msgstr "Ne correspond pas à un « champ de date » si la plupart des lignes de ce champ retournent la même erreur."
4311
-
4312
- #: views/subscribers/importExport/import.html:69
4313
- msgid "First row date cannot be empty."
4314
- msgstr "La première ligne de date ne peut pas être vide."
4315
-
4316
- #: views/subscribers/importExport/import.html:70
4317
- msgid "Verify that the date in blue matches the original date."
4318
- msgstr "Vérifiez que la date en bleu correspond à la date d’origine."
4319
-
4320
- #: views/subscribers/importExport/import.html:71
4321
- msgid "PM"
4322
- msgstr "PM"
4323
-
4324
- #: views/subscribers/importExport/import.html:72
4325
- msgid "AM"
4326
- msgstr "AM"
4327
-
4328
- #: views/subscribers/importExport/import.html:73
4329
- msgid "Error matching date"
4330
- msgstr "Erreur de correspondance de date"
4331
-
4332
- #: views/subscribers/importExport/import.html:74
4333
- msgid ""
4334
- "One of the fields contains an invalid date. Please fix before continuing."
4335
- msgstr "Un de ces champs contient une date non valide. Veuillez le corriger avant de continuer."
4336
-
4337
- #: views/subscribers/importExport/import.html:75
4338
- msgid "Error adding a new list:"
4339
- msgstr "Erreur d’ajout de la nouvelle liste :"
4340
-
4341
- #: views/subscribers/importExport/import.html:76
4342
- msgid ""
4343
- "One of the fields contains an invalid email. Please fix before continuing."
4344
- msgstr "Un de ces champs contient un e-mail non valide. Veuillez le corriger avant de continuer."
4345
-
4346
- #: views/subscribers/importExport/import.html:77
4347
- msgid "Custom field could not be created"
4348
- msgstr "Le champ personnalisé n’a pas pu être créé"
4349
-
4350
- #: views/subscribers/importExport/import.html:78
4351
- msgid "%1$s subscribers added to %2$s."
4352
- msgstr "%1$s abonnés ont été ajoutés à %2$s."
4353
-
4354
- #: views/subscribers/importExport/import.html:79
4355
- msgid "%1$s existing subscribers were updated and added to %2$s."
4356
- msgstr "%1$s abonnés existants ont été mis à jour et ajoutés à %2$s."
4357
-
4358
- #: views/subscribers/subscribers.html:19
4359
- msgid "Loading subscribers..."
4360
- msgstr "Chargement des abonnés&hellip;"
4361
-
4362
- #: views/subscribers/subscribers.html:20
4363
- msgid "No subscribers were found."
4364
- msgstr "Aucun abonné n’a été trouvé."
4365
-
4366
- #: views/subscribers/subscribers.html:21
4367
- msgid "All subscribers on this page are selected."
4368
- msgstr "Tous les abonnés de cette page sont sélectionnés."
4369
-
4370
- #: views/subscribers/subscribers.html:22
4371
- msgid "All %d subscribers are selected."
4372
- msgstr "Les %1$s abonnés sont sélectionnés."
4373
-
4374
- #: views/subscribers/subscribers.html:23
4375
- msgid "Select all subscribers on all pages."
4376
- msgstr "Sélectionner tous les abonnés de toutes les pages."
4377
-
4378
- #: views/subscribers/subscribers.html:25
4379
- msgid "%d subscribers were permanently deleted."
4380
- msgstr "%d abonnés ont été définitivement supprimés."
4381
-
4382
- #: views/subscribers/subscribers.html:47
4383
- msgid "E-mail"
4384
- msgstr "E-mail"
4385
-
4386
- #: views/subscribers/subscribers.html:56
4387
- msgid "Unsubscribed on %$1s"
4388
- msgstr "Désabonné le %1$s"
4389
-
4390
- #: views/subscribers/subscribers.html:57
4391
- msgid "Subscriber was updated successfully!"
4392
- msgstr "L’abonné a bien été mis à jour !"
4393
-
4394
- #: views/subscribers/subscribers.html:58
4395
- msgid "Subscriber was added successfully!"
4396
- msgstr "L’abonné a bien été ajouté !"
4397
-
4398
- #: views/subscribers/subscribers.html:63
4399
- msgid "Subscribed on"
4400
- msgstr "Abonné le"
4401
-
4402
- #: views/subscribers/subscribers.html:65
4403
- msgid "1 subscriber was moved to the trash."
4404
- msgstr "1 abonné a été déplacé dans la corbeille."
4405
-
4406
- #: views/subscribers/subscribers.html:66
4407
- msgid "%$1d subscribers were moved to the trash."
4408
- msgstr "%$1d abonnés ont été déplacés dans la corbeille."
4409
-
4410
- #: views/subscribers/subscribers.html:67
4411
- msgid "1 subscriber was permanently deleted."
4412
- msgstr "1 abonné a été définitivement supprimé."
4413
-
4414
- #: views/subscribers/subscribers.html:68
4415
- msgid "%$1d subscribers were permanently deleted."
4416
- msgstr "%$1d abonnés ont été définitivement supprimés."
4417
-
4418
- #: views/subscribers/subscribers.html:69
4419
- msgid "1 subscriber has been restored from the trash."
4420
- msgstr "1 abonné a été restauré depuis la corbeille."
4421
-
4422
- #: views/subscribers/subscribers.html:70
4423
- msgid "%$1d subscribers have been restored from the trash."
4424
- msgstr "%$1d abonnés ont été restaurés depuis la corbeille."
4425
-
4426
- #: views/subscribers/subscribers.html:71
4427
- msgid "Move to list..."
4428
- msgstr "Déplacer dans la liste&hellip;"
4429
-
4430
- #: views/subscribers/subscribers.html:72
4431
- msgid "%$1d subscribers were moved to list <strong>%$2s</strong>"
4432
- msgstr "%$1d abonnés ont été déplacés dans la liste <strong>%2$s</strong>"
4433
-
4434
- #: views/subscribers/subscribers.html:73
4435
- msgid "Add to list..."
4436
- msgstr "Ajouter à la liste&hellip;"
4437
-
4438
- #: views/subscribers/subscribers.html:74
4439
- msgid "%$1d subscribers were added to list <strong>%$2s</strong>."
4440
- msgstr "%$1d abonnés ont été ajoutés à la liste <strong>%$2s</strong>."
4441
-
4442
- #: views/subscribers/subscribers.html:75
4443
- msgid "Remove from list..."
4444
- msgstr "Retirer de la liste&hellip;"
4445
-
4446
- #: views/subscribers/subscribers.html:76
4447
- msgid "%$1d subscribers were removed from list <strong>%$2s</strong>"
4448
- msgstr "%$1d abonnés ont été retirés de la liste <strong>%$2s</strong>"
4449
-
4450
- #: views/subscribers/subscribers.html:77
4451
- msgid "Remove from all lists"
4452
- msgstr "Retirer de toutes les listes"
4453
-
4454
- #: views/subscribers/subscribers.html:78
4455
- msgid "%$1d subscribers were removed from all lists."
4456
- msgstr "%$1d abonnés ont été retirés de toutes les listes."
4457
-
4458
- #: views/subscribers/subscribers.html:79
4459
- msgid "Resend confirmation email"
4460
- msgstr "Renvoyer l’e-mail de confirmation"
4461
-
4462
- #: views/subscribers/subscribers.html:80
4463
- msgid "%$1d confirmation emails have been sent."
4464
- msgstr "%$1d e-mails de confirmation ont été envoyés."
4465
-
4466
- #: views/subscribers/subscribers.html:81
4467
- msgid "Lists to which the subscriber was subscribed."
4468
- msgstr "Listes auxquelles l’abonné à été abonné."
4469
-
4470
- #: views/subscribers/subscribers.html:83
4471
- msgid ""
4472
- "This subscriber is a registered WordPress user. [link]Edit his/her "
4473
- "profile[/link] to change his/her email."
4474
- msgstr "Cet abonné est un utilisateur WordPress enregistré. [link]Modifiez son profil[/link] pour changer son e-mail."
4475
-
4476
- #: views/subscribers/subscribers.html:84
4477
- msgid "Tip:"
4478
- msgstr "Conseil :"
4479
-
4480
- #: views/subscribers/subscribers.html:85
4481
- msgid ""
4482
- "Need to add new fields, like a telephone number or street address? You can "
4483
- "add custom fields by editing the subscription form on the Forms page."
4484
- msgstr "Besoin d’ajouter de nouveaux champs comme un numéro de téléphone ou une adresse postale ? Vous pouvez ajouter des champs personnalisés en modifiant le formulaire d’abonnement sur la page des formulaires."
4485
-
4486
- #: views/update.html:13 views/welcome.html:22
4487
- msgid "Welcome to MailPoet"
4488
- msgstr "Bienvenue dans MailPoet"
4489
-
4490
- #: views/update.html:15 views/welcome.html:24
4491
- msgid ""
4492
- "Thank you for helping us test and improve this new version of MailPoet. "
4493
- "You're one of our extra-special beta testers. We really appreciate your "
4494
- "help!"
4495
- msgstr "Merci de nous aider à tester et améliorer cette nouvelle version de MailPoet. Vous faites partie de notre équipe de bêta testeurs et votre aide est vraiment appréciable !"
4496
-
4497
- #: views/update.html:21
4498
- msgid "What's New"
4499
- msgstr "Quoi de neuf"
4500
-
4501
- #: views/update.html:25
4502
- msgid "List of Changes"
4503
- msgstr "Liste des modifications"
4504
-
4505
- #: views/update.html:37
4506
- msgid "See readme.txt for a changelog."
4507
- msgstr "Consultez le readme.txt pour la liste complète des modifications."
4508
-
4509
- #: views/update.html:45 views/welcome.html:76
4510
- msgid "Awesome! Now, take me to MailPoet"
4511
- msgstr "Parfait ! Maintenant direction MailPoet"
4512
-
4513
- #: views/update.html:45
4514
- msgid "View all changes"
4515
- msgstr "Voir toutes les modifications"
4516
-
4517
- #: views/welcome.html:26
4518
- msgid "MailPoet Logo"
4519
- msgstr "Logo de MailPoet"
4520
-
4521
- #: views/welcome.html:30
4522
- msgid "What's new"
4523
- msgstr "Quoi de neuf"
4524
-
4525
- #: views/welcome.html:42
4526
- msgid "Help Us Improve MailPoet"
4527
- msgstr "Aidez-nous à améliorer MailPoet"
4528
-
4529
- #: views/welcome.html:44
4530
- msgid "We Need Your Feedback"
4531
- msgstr "Donnez-nous votre avis"
4532
-
4533
- #: views/welcome.html:45
4534
- msgid ""
4535
- "As a beta tester, you have a very important job: to tell us what you think "
4536
- "of this new version. If you love it or absolutely hate it, tell us! Any and "
4537
- "all feedback is useful."
4538
- msgstr "En tant que bêta testeur, vous avez un rôle très important : celui de nous dire ce que vous pensez de cette nouvelle version. Si vous l’aimez ou la détestez, exprimez-vous ! Tous vos retours nous sont utiles."
4539
-
4540
- #: views/welcome.html:46
4541
- msgid "To get in touch with us, simply click on this blue circle"
4542
- msgstr "Pour nous contacter, cliquez simplement sur le cercle bleu"
4543
-
4544
- #: views/welcome.html:46
4545
- msgid ""
4546
- "in the bottom right corner of your screen. This button is visible on all "
4547
- "MailPoet pages on your WordPress dashboard."
4548
- msgstr "dans le coin inférieur droit de votre écran. Ce bouton est visible sur toutes les pages MailPoet de votre tableau de bord WordPress."
4549
-
4550
- #: views/welcome.html:49
4551
- msgid "Share Your Data With Us"
4552
- msgstr "Partagez vos données"
4553
-
4554
- #: views/welcome.html:50
4555
- msgid ""
4556
- "By sharing your data <i>anonymously</i> with us, you can help us understand "
4557
- "how people use MailPoet and what sort of features they like and don't like."
4558
- msgstr "En partageant vos données <i>anonynement</i> avec nous, vous pouvez nous aider à comprendre comment MailPoet est utilisé et les fonctionnalités que nos utilisateurs aiment et n’aiment pas."
4559
-
4560
- #: views/welcome.html:50
4561
- msgid "Find out more"
4562
- msgstr "En savoir plus"
4563
-
4564
- #: views/welcome.html:55
4565
- msgid "Yes, I want to help!"
4566
- msgstr "Oui, je veux vous aider !"
4567
-
4568
- #: views/welcome.html:64
4569
- msgid "Subscribe To Our Newsletter"
4570
- msgstr "Abonnez-vous à notre newsletter"
4571
-
4572
- #: views/welcome.html:65
4573
- msgid "About once a month, we send out a pretty cool newsletter ourselves."
4574
- msgstr "À peu près une fois par mois nous vous enverrons une jolie newsletter."
4575
-
4576
- #: views/welcome.html:66
4577
- msgid ""
4578
- "Sign up to get: Tips and tricks, special offers and important plugin "
4579
- "updates!"
4580
- msgstr "Inscrivez-vous pour recevoir : nos conseils, astuces, offres spéciales et les mises à jour importantes !"
4581
-
4582
- #: lib/Config/Menu.php:76
4583
- msgctxt "newsletters per page (screen options)"
4584
- msgid "Number of newsletters per page"
4585
- msgstr "Nombre de newsletters par page"
4586
-
4587
- #: lib/Config/Menu.php:98
4588
- msgctxt "forms per page (screen options)"
4589
- msgid "Number of forms per page"
4590
- msgstr "Nombre de formulaires par page"
4591
-
4592
- #: lib/Config/Menu.php:120
4593
- msgctxt "subscribers per page (screen options)"
4594
- msgid "Number of subscribers per page"
4595
- msgstr "Nombre d’abonnés par page"
4596
-
4597
- #: lib/Config/Menu.php:143
4598
- msgctxt "segments per page (screen options)"
4599
- msgid "Number of segments per page"
4600
- msgstr "Nombre de segments par page"
4601
-
4602
- #: views/form/templates/settings/field_form.hbs:37
4603
- msgctxt "Form input type"
4604
- msgid "Select"
4605
- msgstr "Sélectionner"
4606
-
4607
- #: views/newsletters.html:100 views/subscribers/importExport/export.html:52
4608
- #: views/subscribers/importExport/export.html:63
4609
- #: views/subscribers/importExport/import/step1.html:95
4610
- #: views/subscribers/importExport/import/step2.html:41
4611
- msgctxt "Verb"
4612
- msgid "Select"
4613
- msgstr "Sélection"
4614
-
4615
- #: views/newsletters.html:206
4616
- msgctxt "Sunday - one letter abbreviation"
4617
- msgid "S"
4618
- msgstr "D"
4619
-
4620
- #: views/newsletters.html:207
4621
- msgctxt "Monday - one letter abbreviation"
4622
- msgid "M"
4623
- msgstr "L"
4624
-
4625
- #: views/newsletters.html:208
4626
- msgctxt "Tuesday - one letter abbreviation"
4627
- msgid "T"
4628
- msgstr "M"
4629
-
4630
- #: views/newsletters.html:209
4631
- msgctxt "Wednesday - one letter abbreviation"
4632
- msgid "W"
4633
- msgstr "M"
4634
-
4635
- #: views/newsletters.html:210
4636
- msgctxt "Thursday - one letter abbreviation"
4637
- msgid "T"
4638
- msgstr "J"
4639
-
4640
- #: views/newsletters.html:211
4641
- msgctxt "Friday - one letter abbreviation"
4642
- msgid "F"
4643
- msgstr "V"
4644
-
4645
- #: views/newsletters.html:212
4646
- msgctxt "Saturday - one letter abbreviation"
4647
- msgid "S"
4648
- msgstr "S"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lang/mailpoet.pot CHANGED
@@ -4,7 +4,7 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
- "POT-Creation-Date: 2017-02-28 12:02:22+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -58,7 +58,7 @@ msgstr ""
58
 
59
  #: lib/API/Endpoints/Forms.php:64 lib/API/Endpoints/Forms.php:68
60
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:32
61
- #: views/newsletter/editor.html:925 views/newsletter/editor.html:926
62
  msgid "Email"
63
  msgstr ""
64
 
@@ -225,7 +225,7 @@ msgstr ""
225
  msgid "Newsletter"
226
  msgstr ""
227
 
228
- #: lib/Config/Menu.php:229
229
  msgid "Newsletter Editor"
230
  msgstr ""
231
 
@@ -601,12 +601,12 @@ msgid ""
601
  msgstr ""
602
 
603
  #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:178
604
- #: views/newsletter/editor.html:962 views/newsletter/editor.html:1084
605
  msgid "Author:"
606
  msgstr ""
607
 
608
  #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:180
609
- #: views/newsletter/editor.html:964 views/newsletter/editor.html:1086
610
  msgid "Categories:"
611
  msgstr ""
612
 
@@ -747,13 +747,13 @@ msgid ""
747
  msgstr ""
748
 
749
  #: lib/Config/PopulatorData/Templates/StoreDiscount.php:335
750
- #: views/newsletter/editor.html:1137
751
  msgid "Facebook"
752
  msgstr ""
753
 
754
  #: lib/Config/PopulatorData/Templates/StoreDiscount.php:343
755
  #: lib/Config/PopulatorData/Templates/TravelEmail.php:85
756
- #: views/newsletter/editor.html:1148
757
  msgid "Twitter"
758
  msgstr ""
759
 
@@ -1349,12 +1349,12 @@ msgid "Click here to view media."
1349
  msgstr ""
1350
 
1351
  #: lib/Newsletter/Shortcodes/Categories/Link.php:32
1352
- #: views/newsletter/editor.html:1042
1353
  msgid "Unsubscribe"
1354
  msgstr ""
1355
 
1356
  #: lib/Newsletter/Shortcodes/Categories/Link.php:53
1357
- #: views/newsletter/editor.html:1042
1358
  msgid "Manage subscription"
1359
  msgstr ""
1360
 
@@ -1629,19 +1629,19 @@ msgstr ""
1629
  msgid "Accidentally unsubscribed?"
1630
  msgstr ""
1631
 
1632
- #: lib/Twig/Functions.php:83 views/settings/mta.html:1049
1633
  msgid "every minute"
1634
  msgstr ""
1635
 
1636
- #: lib/Twig/Functions.php:84 views/settings/mta.html:1050
1637
  msgid "every %1$d minutes"
1638
  msgstr ""
1639
 
1640
- #: lib/Twig/Functions.php:85 views/settings/mta.html:1051
1641
  msgid "every hour"
1642
  msgstr ""
1643
 
1644
- #: lib/Twig/Functions.php:86 views/settings/mta.html:1052
1645
  msgid "every %1$d hours"
1646
  msgstr ""
1647
 
@@ -2205,51 +2205,51 @@ msgstr ""
2205
  msgid "to become a Premium beta tester."
2206
  msgstr ""
2207
 
2208
- #: views/newsletter/editor.html:230 views/newsletters.html:56
2209
  msgid "Select type"
2210
  msgstr ""
2211
 
2212
- #: views/newsletter/editor.html:230 views/newsletters.html:57
2213
  msgid "Template"
2214
  msgstr ""
2215
 
2216
- #: views/newsletter/editor.html:230 views/newsletters.html:58
2217
  msgid "Designer"
2218
  msgstr ""
2219
 
2220
- #: views/newsletter/editor.html:230 views/newsletters.html:59
2221
  msgid "Send"
2222
  msgstr ""
2223
 
2224
- #: views/newsletter/editor.html:259
2225
  msgid "Insert/edit link"
2226
  msgstr ""
2227
 
2228
- #: views/newsletter/editor.html:266
2229
  msgid "Type"
2230
  msgstr ""
2231
 
2232
- #: views/newsletter/editor.html:268
2233
  msgid "Link to a web page"
2234
  msgstr ""
2235
 
2236
- #: views/newsletter/editor.html:269
2237
  msgid "Browser version"
2238
  msgstr ""
2239
 
2240
- #: views/newsletter/editor.html:270
2241
  msgid "Unsubcribe page"
2242
  msgstr ""
2243
 
2244
- #: views/newsletter/editor.html:271
2245
  msgid "Manage your subscription page"
2246
  msgstr ""
2247
 
2248
- #: views/newsletter/editor.html:276 views/newsletter/editor.html:901
2249
- #: views/newsletter/editor.html:906 views/newsletter/editor.html:911
2250
- #: views/newsletter/editor.html:916 views/newsletter/editor.html:921
2251
- #: views/newsletter/editor.html:931 views/newsletter/editor.html:936
2252
- #: views/newsletter/editor.html:941 views/newsletter/editor.html:946
2253
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
2254
  #: views/newsletter/templates/blocks/button/settings.hbs:14
2255
  #: views/newsletter/templates/blocks/image/settings.hbs:4
@@ -2257,120 +2257,120 @@ msgstr ""
2257
  msgid "Link"
2258
  msgstr ""
2259
 
2260
- #: views/newsletter/editor.html:279
2261
  msgid "Title"
2262
  msgstr ""
2263
 
2264
- #: views/newsletter/editor.html:282
2265
  msgid "Open link in a new window/tab"
2266
  msgstr ""
2267
 
2268
- #: views/newsletter/editor.html:288
2269
  msgid "Search your content"
2270
  msgstr ""
2271
 
2272
- #: views/newsletter/editor.html:300
2273
  msgid "No search term specified. Showing recent items."
2274
  msgstr ""
2275
 
2276
- #: views/newsletter/editor.html:310
2277
  msgid "Add Link"
2278
  msgstr ""
2279
 
2280
- #: views/newsletter/editor.html:313
2281
  #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2282
  #: views/subscribers/importExport/import/step2.html:153
2283
  msgid "Cancel"
2284
  msgstr ""
2285
 
2286
- #: views/newsletter/editor.html:322
2287
  msgid "Failed to fetch available posts"
2288
  msgstr ""
2289
 
2290
- #: views/newsletter/editor.html:323
2291
  msgid "Failed to fetch rendered posts"
2292
  msgstr ""
2293
 
2294
- #: views/newsletter/editor.html:324
2295
  msgid "Select a shortcode"
2296
  msgstr ""
2297
 
2298
- #: views/newsletter/editor.html:325
2299
  msgid ""
2300
  "All emails must include an \"Unsubscribe\" link. Add a footer widget to "
2301
  "your email to continue."
2302
  msgstr ""
2303
 
2304
- #: views/newsletter/editor.html:326
2305
  msgid "Enter an email address to send the preview newsletter to."
2306
  msgstr ""
2307
 
2308
- #: views/newsletter/editor.html:327
2309
  msgid "Your test email has been sent!"
2310
  msgstr ""
2311
 
2312
- #: views/newsletter/editor.html:328
2313
  msgid "Please add a template name"
2314
  msgstr ""
2315
 
2316
- #: views/newsletter/editor.html:329
2317
  msgid "Please add a template description"
2318
  msgstr ""
2319
 
2320
- #: views/newsletter/editor.html:330
2321
  msgid "Template has been saved."
2322
  msgstr ""
2323
 
2324
- #: views/newsletter/editor.html:331
2325
  msgid "Template has not been saved, please try again"
2326
  msgstr ""
2327
 
2328
- #: views/newsletter/editor.html:332
2329
  msgid "Categories & tags"
2330
  msgstr ""
2331
 
2332
- #: views/newsletter/editor.html:333
2333
  msgid "There is no content to display."
2334
  msgstr ""
2335
 
2336
- #: views/newsletter/editor.html:334
2337
  msgid ""
2338
  "Your preview should open in a new tab. Please ensure your browser is not "
2339
  "blocking popups from this page."
2340
  msgstr ""
2341
 
2342
- #: views/newsletter/editor.html:335
2343
  msgid "Newsletter Preview"
2344
  msgstr ""
2345
 
2346
- #: views/newsletter/editor.html:336
2347
  msgid ""
2348
  "Contents of this newsletter are corrupted and may be lost, you may need to "
2349
  "add new content to this newsletter, or create a new one. If possible, "
2350
  "please contact us and report this issue."
2351
  msgstr ""
2352
 
2353
- #: views/newsletter/editor.html:337
2354
  msgid "Saving..."
2355
  msgstr ""
2356
 
2357
- #: views/newsletter/editor.html:338
2358
  msgid "There are unsaved changes which will be lost if you leave this page."
2359
  msgstr ""
2360
 
2361
- #: views/newsletter/editor.html:920
2362
  msgid "Website"
2363
  msgstr ""
2364
 
2365
- #: views/newsletter/editor.html:945
2366
  msgid "Custom"
2367
  msgstr ""
2368
 
2369
- #: views/newsletter/editor.html:968 views/newsletter/editor.html:1090
2370
  msgid "Read more"
2371
  msgstr ""
2372
 
2373
- #: views/newsletter/editor.html:1004
2374
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
2375
  #: views/newsletter/templates/blocks/button/settings.hbs:1
2376
  #: views/newsletter/templates/blocks/button/widget.hbs:4
@@ -2378,23 +2378,23 @@ msgstr ""
2378
  msgid "Button"
2379
  msgstr ""
2380
 
2381
- #: views/newsletter/editor.html:1042
2382
  msgid "Add your postal address here!"
2383
  msgstr ""
2384
 
2385
- #: views/newsletter/editor.html:1062
2386
  msgid "An image of..."
2387
  msgstr ""
2388
 
2389
- #: views/newsletter/editor.html:1161
2390
  msgid "Edit this to insert text."
2391
  msgstr ""
2392
 
2393
- #: views/newsletter/editor.html:1164
2394
  msgid "Display problems?"
2395
  msgstr ""
2396
 
2397
- #: views/newsletter/editor.html:1165
2398
  msgid "Open this email in your web browser."
2399
  msgstr ""
2400
 
@@ -4061,19 +4061,19 @@ msgstr ""
4061
  msgid "Yup, it works! You can start blasting away emails to the moon."
4062
  msgstr ""
4063
 
4064
- #: views/settings/mta.html:730
4065
  msgid "The email has been sent! Check your inbox."
4066
  msgstr ""
4067
 
4068
- #: views/settings/mta.html:751
4069
  msgid "Please specify an API key before validating it."
4070
  msgstr ""
4071
 
4072
- #: views/settings/mta.html:811
4073
  msgid "You have selected an invalid sending method."
4074
  msgstr ""
4075
 
4076
- #: views/settings/mta.html:819
4077
  msgid "You need to specify a MailPoet account key."
4078
  msgstr ""
4079
 
@@ -4680,12 +4680,12 @@ msgctxt "Form input type"
4680
  msgid "Select"
4681
  msgstr ""
4682
 
4683
- #: views/newsletter/editor.html:339
4684
  msgctxt "select color"
4685
  msgid "Select"
4686
  msgstr ""
4687
 
4688
- #: views/newsletter/editor.html:340
4689
  msgctxt "cancel color selection"
4690
  msgid "Cancel"
4691
  msgstr ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
7
+ "POT-Creation-Date: 2017-03-07 14:26:40+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
58
 
59
  #: lib/API/Endpoints/Forms.php:64 lib/API/Endpoints/Forms.php:68
60
  #: lib/Subscribers/ImportExport/ImportExportFactory.php:32
61
+ #: views/newsletter/editor.html:928 views/newsletter/editor.html:929
62
  msgid "Email"
63
  msgstr ""
64
 
225
  msgid "Newsletter"
226
  msgstr ""
227
 
228
+ #: lib/Config/Menu.php:229 views/newsletter/editor.html:228
229
  msgid "Newsletter Editor"
230
  msgstr ""
231
 
601
  msgstr ""
602
 
603
  #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:178
604
+ #: views/newsletter/editor.html:965 views/newsletter/editor.html:1087
605
  msgid "Author:"
606
  msgstr ""
607
 
608
  #: lib/Config/PopulatorData/Templates/PostNotificationsBlank1Column.php:180
609
+ #: views/newsletter/editor.html:967 views/newsletter/editor.html:1089
610
  msgid "Categories:"
611
  msgstr ""
612
 
747
  msgstr ""
748
 
749
  #: lib/Config/PopulatorData/Templates/StoreDiscount.php:335
750
+ #: views/newsletter/editor.html:1140
751
  msgid "Facebook"
752
  msgstr ""
753
 
754
  #: lib/Config/PopulatorData/Templates/StoreDiscount.php:343
755
  #: lib/Config/PopulatorData/Templates/TravelEmail.php:85
756
+ #: views/newsletter/editor.html:1151
757
  msgid "Twitter"
758
  msgstr ""
759
 
1349
  msgstr ""
1350
 
1351
  #: lib/Newsletter/Shortcodes/Categories/Link.php:32
1352
+ #: views/newsletter/editor.html:1045
1353
  msgid "Unsubscribe"
1354
  msgstr ""
1355
 
1356
  #: lib/Newsletter/Shortcodes/Categories/Link.php:53
1357
+ #: views/newsletter/editor.html:1045
1358
  msgid "Manage subscription"
1359
  msgstr ""
1360
 
1629
  msgid "Accidentally unsubscribed?"
1630
  msgstr ""
1631
 
1632
+ #: lib/Twig/Functions.php:83 views/settings/mta.html:1045
1633
  msgid "every minute"
1634
  msgstr ""
1635
 
1636
+ #: lib/Twig/Functions.php:84 views/settings/mta.html:1046
1637
  msgid "every %1$d minutes"
1638
  msgstr ""
1639
 
1640
+ #: lib/Twig/Functions.php:85 views/settings/mta.html:1047
1641
  msgid "every hour"
1642
  msgstr ""
1643
 
1644
+ #: lib/Twig/Functions.php:86 views/settings/mta.html:1048
1645
  msgid "every %1$d hours"
1646
  msgstr ""
1647
 
2205
  msgid "to become a Premium beta tester."
2206
  msgstr ""
2207
 
2208
+ #: views/newsletter/editor.html:233 views/newsletters.html:56
2209
  msgid "Select type"
2210
  msgstr ""
2211
 
2212
+ #: views/newsletter/editor.html:233 views/newsletters.html:57
2213
  msgid "Template"
2214
  msgstr ""
2215
 
2216
+ #: views/newsletter/editor.html:233 views/newsletters.html:58
2217
  msgid "Designer"
2218
  msgstr ""
2219
 
2220
+ #: views/newsletter/editor.html:233 views/newsletters.html:59
2221
  msgid "Send"
2222
  msgstr ""
2223
 
2224
+ #: views/newsletter/editor.html:262
2225
  msgid "Insert/edit link"
2226
  msgstr ""
2227
 
2228
+ #: views/newsletter/editor.html:269
2229
  msgid "Type"
2230
  msgstr ""
2231
 
2232
+ #: views/newsletter/editor.html:271
2233
  msgid "Link to a web page"
2234
  msgstr ""
2235
 
2236
+ #: views/newsletter/editor.html:272
2237
  msgid "Browser version"
2238
  msgstr ""
2239
 
2240
+ #: views/newsletter/editor.html:273
2241
  msgid "Unsubcribe page"
2242
  msgstr ""
2243
 
2244
+ #: views/newsletter/editor.html:274
2245
  msgid "Manage your subscription page"
2246
  msgstr ""
2247
 
2248
+ #: views/newsletter/editor.html:279 views/newsletter/editor.html:904
2249
+ #: views/newsletter/editor.html:909 views/newsletter/editor.html:914
2250
+ #: views/newsletter/editor.html:919 views/newsletter/editor.html:924
2251
+ #: views/newsletter/editor.html:934 views/newsletter/editor.html:939
2252
+ #: views/newsletter/editor.html:944 views/newsletter/editor.html:949
2253
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:237
2254
  #: views/newsletter/templates/blocks/button/settings.hbs:14
2255
  #: views/newsletter/templates/blocks/image/settings.hbs:4
2257
  msgid "Link"
2258
  msgstr ""
2259
 
2260
+ #: views/newsletter/editor.html:282
2261
  msgid "Title"
2262
  msgstr ""
2263
 
2264
+ #: views/newsletter/editor.html:285
2265
  msgid "Open link in a new window/tab"
2266
  msgstr ""
2267
 
2268
+ #: views/newsletter/editor.html:291
2269
  msgid "Search your content"
2270
  msgstr ""
2271
 
2272
+ #: views/newsletter/editor.html:303
2273
  msgid "No search term specified. Showing recent items."
2274
  msgstr ""
2275
 
2276
+ #: views/newsletter/editor.html:313
2277
  msgid "Add Link"
2278
  msgstr ""
2279
 
2280
+ #: views/newsletter/editor.html:316
2281
  #: views/newsletter/templates/blocks/base/toolsGeneric.hbs:6
2282
  #: views/subscribers/importExport/import/step2.html:153
2283
  msgid "Cancel"
2284
  msgstr ""
2285
 
2286
+ #: views/newsletter/editor.html:325
2287
  msgid "Failed to fetch available posts"
2288
  msgstr ""
2289
 
2290
+ #: views/newsletter/editor.html:326
2291
  msgid "Failed to fetch rendered posts"
2292
  msgstr ""
2293
 
2294
+ #: views/newsletter/editor.html:327
2295
  msgid "Select a shortcode"
2296
  msgstr ""
2297
 
2298
+ #: views/newsletter/editor.html:328
2299
  msgid ""
2300
  "All emails must include an \"Unsubscribe\" link. Add a footer widget to "
2301
  "your email to continue."
2302
  msgstr ""
2303
 
2304
+ #: views/newsletter/editor.html:329
2305
  msgid "Enter an email address to send the preview newsletter to."
2306
  msgstr ""
2307
 
2308
+ #: views/newsletter/editor.html:330
2309
  msgid "Your test email has been sent!"
2310
  msgstr ""
2311
 
2312
+ #: views/newsletter/editor.html:331
2313
  msgid "Please add a template name"
2314
  msgstr ""
2315
 
2316
+ #: views/newsletter/editor.html:332
2317
  msgid "Please add a template description"
2318
  msgstr ""
2319
 
2320
+ #: views/newsletter/editor.html:333
2321
  msgid "Template has been saved."
2322
  msgstr ""
2323
 
2324
+ #: views/newsletter/editor.html:334
2325
  msgid "Template has not been saved, please try again"
2326
  msgstr ""
2327
 
2328
+ #: views/newsletter/editor.html:335
2329
  msgid "Categories & tags"
2330
  msgstr ""
2331
 
2332
+ #: views/newsletter/editor.html:336
2333
  msgid "There is no content to display."
2334
  msgstr ""
2335
 
2336
+ #: views/newsletter/editor.html:337
2337
  msgid ""
2338
  "Your preview should open in a new tab. Please ensure your browser is not "
2339
  "blocking popups from this page."
2340
  msgstr ""
2341
 
2342
+ #: views/newsletter/editor.html:338
2343
  msgid "Newsletter Preview"
2344
  msgstr ""
2345
 
2346
+ #: views/newsletter/editor.html:339
2347
  msgid ""
2348
  "Contents of this newsletter are corrupted and may be lost, you may need to "
2349
  "add new content to this newsletter, or create a new one. If possible, "
2350
  "please contact us and report this issue."
2351
  msgstr ""
2352
 
2353
+ #: views/newsletter/editor.html:340
2354
  msgid "Saving..."
2355
  msgstr ""
2356
 
2357
+ #: views/newsletter/editor.html:341
2358
  msgid "There are unsaved changes which will be lost if you leave this page."
2359
  msgstr ""
2360
 
2361
+ #: views/newsletter/editor.html:923
2362
  msgid "Website"
2363
  msgstr ""
2364
 
2365
+ #: views/newsletter/editor.html:948
2366
  msgid "Custom"
2367
  msgstr ""
2368
 
2369
+ #: views/newsletter/editor.html:971 views/newsletter/editor.html:1093
2370
  msgid "Read more"
2371
  msgstr ""
2372
 
2373
+ #: views/newsletter/editor.html:1007
2374
  #: views/newsletter/templates/blocks/automatedLatestContent/settings.hbs:243
2375
  #: views/newsletter/templates/blocks/button/settings.hbs:1
2376
  #: views/newsletter/templates/blocks/button/widget.hbs:4
2378
  msgid "Button"
2379
  msgstr ""
2380
 
2381
+ #: views/newsletter/editor.html:1045
2382
  msgid "Add your postal address here!"
2383
  msgstr ""
2384
 
2385
+ #: views/newsletter/editor.html:1065
2386
  msgid "An image of..."
2387
  msgstr ""
2388
 
2389
+ #: views/newsletter/editor.html:1164
2390
  msgid "Edit this to insert text."
2391
  msgstr ""
2392
 
2393
+ #: views/newsletter/editor.html:1167
2394
  msgid "Display problems?"
2395
  msgstr ""
2396
 
2397
+ #: views/newsletter/editor.html:1168
2398
  msgid "Open this email in your web browser."
2399
  msgstr ""
2400
 
4061
  msgid "Yup, it works! You can start blasting away emails to the moon."
4062
  msgstr ""
4063
 
4064
+ #: views/settings/mta.html:726
4065
  msgid "The email has been sent! Check your inbox."
4066
  msgstr ""
4067
 
4068
+ #: views/settings/mta.html:747
4069
  msgid "Please specify an API key before validating it."
4070
  msgstr ""
4071
 
4072
+ #: views/settings/mta.html:807
4073
  msgid "You have selected an invalid sending method."
4074
  msgstr ""
4075
 
4076
+ #: views/settings/mta.html:815
4077
  msgid "You need to specify a MailPoet account key."
4078
  msgstr ""
4079
 
4680
  msgid "Select"
4681
  msgstr ""
4682
 
4683
+ #: views/newsletter/editor.html:342
4684
  msgctxt "select color"
4685
  msgid "Select"
4686
  msgstr ""
4687
 
4688
+ #: views/newsletter/editor.html:343
4689
  msgctxt "cancel color selection"
4690
  msgid "Cancel"
4691
  msgstr ""
lib/Cron/Workers/SendingQueue/SendingQueue.php CHANGED
@@ -15,7 +15,7 @@ class SendingQueue {
15
  public $mailer_task;
16
  public $newsletter_task;
17
  public $timer;
18
- const BATCH_SIZE = 50;
19
 
20
  function __construct($timer = false, $mailer_task = false, $newsletter_task = false) {
21
  $this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
15
  public $mailer_task;
16
  public $newsletter_task;
17
  public $timer;
18
+ const BATCH_SIZE = 20;
19
 
20
  function __construct($timer = false, $mailer_task = false, $newsletter_task = false) {
21
  $this->mailer_task = ($mailer_task) ? $mailer_task : new MailerTask();
mailpoet.php CHANGED
@@ -4,13 +4,13 @@ if(!defined('ABSPATH')) exit;
4
 
5
  /*
6
  * Plugin Name: MailPoet
7
- * Version: 3.0.0-beta.21
8
  * Plugin URI: http://www.mailpoet.com
9
  * Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
10
  * Author: MailPoet
11
  * Author URI: http://www.mailpoet.com
12
  * Requires at least: 4.6
13
- * Tested up to: 4.7.2
14
  *
15
  * Text Domain: mailpoet
16
  * Domain Path: /lang/
@@ -21,7 +21,7 @@ if(!defined('ABSPATH')) exit;
21
  */
22
 
23
  $mailpoet_plugin = array(
24
- 'version' => '3.0.0-beta.21',
25
  'filename' => __FILE__,
26
  'path' => dirname(__FILE__),
27
  'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
4
 
5
  /*
6
  * Plugin Name: MailPoet
7
+ * Version: 3.0.0-beta.22
8
  * Plugin URI: http://www.mailpoet.com
9
  * Description: Create and send beautiful email newsletters, autoresponders, and post notifications without leaving WordPress. This is a beta version of our brand new plugin!
10
  * Author: MailPoet
11
  * Author URI: http://www.mailpoet.com
12
  * Requires at least: 4.6
13
+ * Tested up to: 4.7.3
14
  *
15
  * Text Domain: mailpoet
16
  * Domain Path: /lang/
21
  */
22
 
23
  $mailpoet_plugin = array(
24
+ 'version' => '3.0.0-beta.22',
25
  'filename' => __FILE__,
26
  'path' => dirname(__FILE__),
27
  'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: mailpoet, wysija
3
  Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
4
  Requires at least: 4.6
5
- Tested up to: 4.7.2
6
- Stable tag: 3.0.0-beta.21
7
  Create and send beautiful emails and newsletters from WordPress.
8
 
9
  == Description ==
@@ -83,11 +83,17 @@ Our [support site](https://docs.mailpoet.com/) has plenty of articles. You can w
83
 
84
  == Changelog ==
85
 
 
 
 
 
 
 
86
  = 3.0.0-beta.21 - 2017-02-28 =
87
- - Fixed: newsletter sending process will fully stop when sending is paused. Thanks Terry!
88
- - Fixed: MailPoet sending method will work on sites using PHP 5.3. Thanks Jeff!
89
- - Fixed: bulk trashing and restoring newsletters and forms will work on sites using PHP 5.3. Thanks Scott!
90
- - We recommend all of you to upgrade to PHP 7. It's faster, more reliable, and safer. It's just a question of asking your host to switch.
91
 
92
  = 3.0.0-beta.20 - 2017-02-23 =
93
  * Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
2
  Contributors: mailpoet, wysija
3
  Tags: newsletter, email, welcome email, post notification, autoresponder, signup, smtp
4
  Requires at least: 4.6
5
+ Tested up to: 4.7.3
6
+ Stable tag: 3.0.0-beta.22
7
  Create and send beautiful emails and newsletters from WordPress.
8
 
9
  == Description ==
83
 
84
  == Changelog ==
85
 
86
+ = 3.0.0-beta.22 - 2017-03-07 =
87
+ * Improved: sending very large emails with our sending service is less likely to time out. Thanks Mark!;
88
+ * Fixed: WordPress warnings are no longer displayed in the editor's contents;
89
+ * Small, little and tiny improvements to show we pay attention to details;
90
+ * British scientists say people whose sites run on PHP below version 7 have the lowest quality of life.
91
+
92
  = 3.0.0-beta.21 - 2017-02-28 =
93
+ * Fixed: newsletter sending process will fully stop when sending is paused. Thanks Terry!
94
+ * Fixed: MailPoet sending method will work on sites using PHP 5.3. Thanks Jeff!
95
+ * Fixed: bulk trashing and restoring newsletters and forms will work on sites using PHP 5.3. Thanks Scott!
96
+ * We recommend all of you to upgrade to PHP 7. It's faster, more reliable, and safer. It's just a question of asking your host to switch.
97
 
98
  = 3.0.0-beta.20 - 2017-02-23 =
99
  * Fixed: scheduling options are properly saved when creating a new or re-saving an existing email. Thx Oskar!;
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -55,7 +55,6 @@ class ClassLoader
55
  private $classMap = array();
56
  private $classMapAuthoritative = false;
57
  private $missingClasses = array();
58
- private $apcuPrefix;
59
 
60
  public function getPrefixes()
61
  {
@@ -272,26 +271,6 @@ class ClassLoader
272
  return $this->classMapAuthoritative;
273
  }
274
 
275
- /**
276
- * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
277
- *
278
- * @param string|null $apcuPrefix
279
- */
280
- public function setApcuPrefix($apcuPrefix)
281
- {
282
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
283
- }
284
-
285
- /**
286
- * The APCu prefix in use, or null if APCu caching is not enabled.
287
- *
288
- * @return string|null
289
- */
290
- public function getApcuPrefix()
291
- {
292
- return $this->apcuPrefix;
293
- }
294
-
295
  /**
296
  * Registers this instance as an autoloader.
297
  *
@@ -334,6 +313,11 @@ class ClassLoader
334
  */
335
  public function findFile($class)
336
  {
 
 
 
 
 
337
  // class map lookup
338
  if (isset($this->classMap[$class])) {
339
  return $this->classMap[$class];
@@ -341,12 +325,6 @@ class ClassLoader
341
  if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
342
  return false;
343
  }
344
- if (null !== $this->apcuPrefix) {
345
- $file = apcu_fetch($this->apcuPrefix.$class, $hit);
346
- if ($hit) {
347
- return $file;
348
- }
349
- }
350
 
351
  $file = $this->findFileWithExtension($class, '.php');
352
 
@@ -355,10 +333,6 @@ class ClassLoader
355
  $file = $this->findFileWithExtension($class, '.hh');
356
  }
357
 
358
- if (null !== $this->apcuPrefix) {
359
- apcu_add($this->apcuPrefix.$class, $file);
360
- }
361
-
362
  if (false === $file) {
363
  // Remember that this class does not exist.
364
  $this->missingClasses[$class] = true;
55
  private $classMap = array();
56
  private $classMapAuthoritative = false;
57
  private $missingClasses = array();
 
58
 
59
  public function getPrefixes()
60
  {
271
  return $this->classMapAuthoritative;
272
  }
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  /**
275
  * Registers this instance as an autoloader.
276
  *
313
  */
314
  public function findFile($class)
315
  {
316
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
317
+ if ('\\' == $class[0]) {
318
+ $class = substr($class, 1);
319
+ }
320
+
321
  // class map lookup
322
  if (isset($this->classMap[$class])) {
323
  return $this->classMap[$class];
325
  if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
326
  return false;
327
  }
 
 
 
 
 
 
328
 
329
  $file = $this->findFileWithExtension($class, '.php');
330
 
333
  $file = $this->findFileWithExtension($class, '.hh');
334
  }
335
 
 
 
 
 
336
  if (false === $file) {
337
  // Remember that this class does not exist.
338
  $this->missingClasses[$class] = true;
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c', 'loadClassLoader'));
25
 
26
- $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit7e578735926a71ed928f2bb5dfff326c::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit7e578735926a71ed928f2bb5dfff326c
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
- $includeFiles = Composer\Autoload\ComposerStaticInit7e578735926a71ed928f2bb5dfff326c::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
- composerRequire7e578735926a71ed928f2bb5dfff326c($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
- function composerRequire7e578735926a71ed928f2bb5dfff326c($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit15efd7c5cfbd30e491652e9955de99b6', 'loadClassLoader'));
25
 
26
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
+ $includeFiles = Composer\Autoload\ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
+ composerRequire15efd7c5cfbd30e491652e9955de99b6($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
+ function composerRequire15efd7c5cfbd30e491652e9955de99b6($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit7e578735926a71ed928f2bb5dfff326c
8
  {
9
  public static $files = array (
10
  '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@@ -608,10 +608,10 @@ class ComposerStaticInit7e578735926a71ed928f2bb5dfff326c
608
  public static function getInitializer(ClassLoader $loader)
609
  {
610
  return \Closure::bind(function () use ($loader) {
611
- $loader->prefixLengthsPsr4 = ComposerStaticInit7e578735926a71ed928f2bb5dfff326c::$prefixLengthsPsr4;
612
- $loader->prefixDirsPsr4 = ComposerStaticInit7e578735926a71ed928f2bb5dfff326c::$prefixDirsPsr4;
613
- $loader->prefixesPsr0 = ComposerStaticInit7e578735926a71ed928f2bb5dfff326c::$prefixesPsr0;
614
- $loader->classMap = ComposerStaticInit7e578735926a71ed928f2bb5dfff326c::$classMap;
615
 
616
  }, null, ClassLoader::class);
617
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6
8
  {
9
  public static $files = array (
10
  '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
608
  public static function getInitializer(ClassLoader $loader)
609
  {
610
  return \Closure::bind(function () use ($loader) {
611
+ $loader->prefixLengthsPsr4 = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$prefixLengthsPsr4;
612
+ $loader->prefixDirsPsr4 = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$prefixDirsPsr4;
613
+ $loader->prefixesPsr0 = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$prefixesPsr0;
614
+ $loader->classMap = ComposerStaticInit15efd7c5cfbd30e491652e9955de99b6::$classMap;
615
 
616
  }, null, ClassLoader::class);
617
  }
vendor/composer/installed.json CHANGED
@@ -14,7 +14,7 @@
14
  "reference": "b0c1bda3be5a35da44ba1ac28cc61c67d2ada465",
15
  "shasum": ""
16
  },
17
- "time": "2015-11-28T21:47:43+00:00",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
@@ -55,7 +55,7 @@
55
  "require-dev": {
56
  "phpunit/phpunit": "^5.6"
57
  },
58
- "time": "2016-12-14T06:28:26+00:00",
59
  "type": "library",
60
  "installation-source": "dist",
61
  "autoload": {
@@ -116,7 +116,7 @@
116
  "j4mie/idiorm": "1.5.*",
117
  "php": ">=5.2.0"
118
  },
119
- "time": "2014-09-23T10:49:36+00:00",
120
  "type": "library",
121
  "installation-source": "dist",
122
  "autoload": {
@@ -180,7 +180,7 @@
180
  "require-dev": {
181
  "phpunit/phpunit": "~4.0|~5.0"
182
  },
183
- "time": "2017-01-23T04:29:33+00:00",
184
  "type": "library",
185
  "installation-source": "dist",
186
  "autoload": {
@@ -226,7 +226,7 @@
226
  "suggest": {
227
  "ext-mbstring": "For best performance"
228
  },
229
- "time": "2016-11-14T01:06:16+00:00",
230
  "type": "library",
231
  "extra": {
232
  "branch-alias": {
@@ -299,7 +299,7 @@
299
  "symfony/config": "",
300
  "symfony/yaml": ""
301
  },
302
- "time": "2017-01-21T16:59:38+00:00",
303
  "type": "library",
304
  "extra": {
305
  "branch-alias": {
@@ -355,7 +355,7 @@
355
  "friendsofphp/php-cs-fixer": "~2",
356
  "phpunit/phpunit": "~4.0 || ~5.0"
357
  },
358
- "time": "2017-01-16T07:55:07+00:00",
359
  "type": "library",
360
  "extra": {
361
  "branch-alias": {
@@ -408,7 +408,7 @@
408
  "require-dev": {
409
  "phpunit/phpunit": "*"
410
  },
411
- "time": "2016-07-19T19:14:21+00:00",
412
  "type": "library",
413
  "installation-source": "dist",
414
  "autoload": {
@@ -457,7 +457,7 @@
457
  "phpunit/phpunit": ">=4.0",
458
  "soundasleep/component-tests": "dev-master"
459
  },
460
- "time": "2016-07-28T01:09:53+00:00",
461
  "type": "library",
462
  "installation-source": "dist",
463
  "autoload": {
@@ -510,7 +510,7 @@
510
  "mockery/mockery": "~0.9.1",
511
  "symfony/phpunit-bridge": "~3.2"
512
  },
513
- "time": "2016-12-29T10:02:40+00:00",
514
  "type": "library",
515
  "extra": {
516
  "branch-alias": {
@@ -565,7 +565,7 @@
565
  "require-dev": {
566
  "htmlawed/htmlawed": "dev-master"
567
  },
568
- "time": "2016-01-14T20:55:00+00:00",
569
  "type": "library",
570
  "installation-source": "dist",
571
  "autoload": {
@@ -620,7 +620,7 @@
620
  "symfony/debug": "~2.7",
621
  "symfony/phpunit-bridge": "~3.2"
622
  },
623
- "time": "2017-01-11T19:36:15+00:00",
624
  "type": "library",
625
  "extra": {
626
  "branch-alias": {
14
  "reference": "b0c1bda3be5a35da44ba1ac28cc61c67d2ada465",
15
  "shasum": ""
16
  },
17
+ "time": "2015-11-28 21:47:43",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
55
  "require-dev": {
56
  "phpunit/phpunit": "^5.6"
57
  },
58
+ "time": "2016-12-14 06:28:26",
59
  "type": "library",
60
  "installation-source": "dist",
61
  "autoload": {
116
  "j4mie/idiorm": "1.5.*",
117
  "php": ">=5.2.0"
118
  },
119
+ "time": "2014-09-23 10:49:36",
120
  "type": "library",
121
  "installation-source": "dist",
122
  "autoload": {
180
  "require-dev": {
181
  "phpunit/phpunit": "~4.0|~5.0"
182
  },
183
+ "time": "2017-01-23 04:29:33",
184
  "type": "library",
185
  "installation-source": "dist",
186
  "autoload": {
226
  "suggest": {
227
  "ext-mbstring": "For best performance"
228
  },
229
+ "time": "2016-11-14 01:06:16",
230
  "type": "library",
231
  "extra": {
232
  "branch-alias": {
299
  "symfony/config": "",
300
  "symfony/yaml": ""
301
  },
302
+ "time": "2017-01-21 16:59:38",
303
  "type": "library",
304
  "extra": {
305
  "branch-alias": {
355
  "friendsofphp/php-cs-fixer": "~2",
356
  "phpunit/phpunit": "~4.0 || ~5.0"
357
  },
358
+ "time": "2017-01-16 07:55:07",
359
  "type": "library",
360
  "extra": {
361
  "branch-alias": {
408
  "require-dev": {
409
  "phpunit/phpunit": "*"
410
  },
411
+ "time": "2016-07-19 19:14:21",
412
  "type": "library",
413
  "installation-source": "dist",
414
  "autoload": {
457
  "phpunit/phpunit": ">=4.0",
458
  "soundasleep/component-tests": "dev-master"
459
  },
460
+ "time": "2016-07-28 01:09:53",
461
  "type": "library",
462
  "installation-source": "dist",
463
  "autoload": {
510
  "mockery/mockery": "~0.9.1",
511
  "symfony/phpunit-bridge": "~3.2"
512
  },
513
+ "time": "2016-12-29 10:02:40",
514
  "type": "library",
515
  "extra": {
516
  "branch-alias": {
565
  "require-dev": {
566
  "htmlawed/htmlawed": "dev-master"
567
  },
568
+ "time": "2016-01-14 20:55:00",
569
  "type": "library",
570
  "installation-source": "dist",
571
  "autoload": {
620
  "symfony/debug": "~2.7",
621
  "symfony/phpunit-bridge": "~3.2"
622
  },
623
+ "time": "2017-01-11 19:36:15",
624
  "type": "library",
625
  "extra": {
626
  "branch-alias": {
views/newsletter/editor.html CHANGED
@@ -224,6 +224,9 @@
224
  <% endblock %>
225
 
226
  <% block content %>
 
 
 
227
  <div id="mailpoet_editor">
228
  <div id="mailpoet_editor_heading"></div>
229
  <div class="mailpoet_breadcrumbs">
224
  <% endblock %>
225
 
226
  <% block content %>
227
+ <!-- Hidden heading for notices to appear under -->
228
+ <h1 style="display:none"><%= __('Newsletter Editor') %></h1>
229
+
230
  <div id="mailpoet_editor">
231
  <div id="mailpoet_editor_heading"></div>
232
  <div class="mailpoet_breadcrumbs">
views/settings/mta.html CHANGED
@@ -717,11 +717,7 @@
717
  text: "<%= __('Yup, it works! You can start blasting away emails to the moon.') %>"
718
  }
719
  },
720
- subscriber: {
721
- first_name: "<%= current_user.display_name %>",
722
- last_name: "",
723
- email: recipient
724
- }
725
  }
726
  }).always(function() {
727
  MailPoet.Modal.loading(false);
717
  text: "<%= __('Yup, it works! You can start blasting away emails to the moon.') %>"
718
  }
719
  },
720
+ subscriber: recipient
 
 
 
 
721
  }
722
  }).always(function() {
723
  MailPoet.Modal.loading(false);